| Hello, I have 3 grids nested inside a main grid using the NestedViewTemplate. Everything works fine for binding and displaying the data. The problem is I want to use a CommandItemTemplate in the nested grid to popup another window for inserting new parts. I can make the window pop-up, I just can not get the primary key from the top level grid to go with it. I have tried all kinds of stuff, but I was hoping to do something like the snippet below to include the PlanID as an argument to my javascript function:
I am open to C# code behind to set the onclick attributes or javascript to dig around if necessary to get the PlanID from the parent grid or the nested grid, it exists in both. I have inserted sample markup below if that helps. Thanks! Tom (Sorry for the blue, I should have typed before using the format code block?) <telerik:RadGrid ID="gridJobPlans" runat="server" DataSourceID="objJobPlans" |
||||
| GridLines="None" AllowFilteringByColumn="True" AllowSorting="True" | ||||
| AutoGenerateColumns="False" | ||||
| onupdatecommand="gridJobPlans_UpdateCommand" | ||||
| > | ||||
| <MasterTableView DataKeyNames="ID" | ||||
| DataSourceID="obj1" CommandItemDisplay="TopAndBottom"> | ||||
| <NestedViewTemplate> | ||||
| <asp:Label ID="PlanID" runat="server" Text='<%# Eval("ID") %>' /> | ||||
| <telerik:RadTabStrip ID="RadTabStrip1" runat="server" SelectedIndex="1" | ||||
| MultiPageID="MultiPageSelectedJobPlan"> | ||||
| <Tabs> | ||||
| <telerik:RadTab runat="server" Text="Documents" | ||||
| PageViewID="SelectedJobPlanDocs"> | ||||
| </telerik:RadTab> | ||||
| </Tabs> | ||||
| </telerik:RadTabStrip> | ||||
| <telerik:RadMultiPage ID="MultiPageSelectedJobPlan" Runat="server" | ||||
| Width="703px" SelectedIndex="2"> | ||||
| <telerik:RadPageView ID="Parts" runat="server"> | ||||
| <telerik:RadGrid ID="Grid" runat="server" | ||||
| AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" | ||||
| AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True" | ||||
| DataSourceID="objSelected2" GridLines="None" AllowAutomaticDeletes="true"> | ||||
| <MasterTableView AutoGenerateColumns="False" DataKeyNames="ID, PlanID" | ||||
| CommandItemDisplay="TopAndBottom"> | ||||
| <Columns> | ||||
| <telerik:GridBoundColumn DataField="ID" DataType="System.Int64" HeaderText="ID" | ||||
| ReadOnly="True" SortExpression="ID" UniqueName="ID" Display="false"> | ||||
| </telerik:GridBoundColumn> | ||||
| <telerik:GridBoundColumn DataField="PlanID" DataType="System.Int64" | ||||
| HeaderText="PlanID" SortExpression="PlanID" UniqueName="PlanID" Display="true"> | ||||
| </telerik:GridBoundColumn> | ||||
| </Columns> | ||||
| <CommandItemTemplate> | ||||
| <asp:Label ID="lblAddNewPart" Text="Add" runat="server"/> | ||||
| <a href="#" onclick="return ShowAddPartForm('<%# Bind( "PlanID" ) %>');">Add New </a> | ||||
| </CommandItemTemplate> | ||||
| </MasterTableView> | ||||
| </telerik:RadGrid> | ||||
| </telerik:RadPageView> | ||||
| </telerik:RadMultiPage> | ||||
| </NestedViewTemplate> | ||||
| </MasterTableView> | ||||
| </telerik:RadGrid> | ||||
RadGrid GridReport = (RadGrid)GridPlaceHolder.FindControl("GridReport"); if (GridReport.MasterTableView.Columns.FindByUniqueNameSafe("ObjectName") != null) { GridReport.MasterTableView.Columns.FindByUniqueName("ObjectName").Visible = false; GridReport.MasterTableView.Columns.FindByUniqueName("ObjectNameText").Visible = true; } //GridReport.ExportSettings.Excel.Format = GridExcelExportFormat.ExcelML; GridReport.ExportSettings.Excel.Format = GridExcelExportFormat.Html; GridReport.ExportSettings.IgnorePaging = true; GridReport.ExportSettings.OpenInNewWindow = true; GridReport.ExportSettings.ExportOnlyData = true; if (cbExportAllPages.Checked == true) GridReport.PageSize = GridReport.MasterTableView.VirtualItemCount; GridReport.DataSource = reportResult(Session["sqlStr"].ToString()); GridReport.Rebind(); GridReport.MasterTableView.ExportToExcel();RadNumericTextBox in a GridTemplateColumn.
The user can update the Quantity on the Order Detail grid and click the Save button to save the Order Detail. This Save button is displayed in the Order Detail NestedViewTemplate.

<form id="form1" runat="server"><telerik:RadScriptManager ID="Script" runat="server" /><div id="divPrincipal"> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function Start() { var notification = $find('<%= RadNotification1.ClientID %>'); notification.show(); } </script> </telerik:RadCodeBlock> <telerik:RadButton ID="btnTeste" runat="server" Text="Teste" OnClick="btnTeste_Click" OnClientClicked="Start" /> <asp:UpdatePanel ID="updNotificacao" UpdateMode="Conditional" runat="server" ChildrenAsTriggers="false"> <ContentTemplate> <telerik:RadNotification ID="RadNotification1" runat="server" EnableRoundedCorners="true" EnableShadow="true" Text="Começou a Processar" Title="Mensagem" Width="300" Height="100" /> <telerik:RadNotification ID="RadNotification2" runat="server" EnableRoundedCorners="true" EnableShadow="true" Text="Execucao Concluida" Title="Mensagem" Width="300" Height="100" /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnTeste" EventName="Click" /> </Triggers> </asp:UpdatePanel> <asp:UpdatePanel runat="server" ID="updForm" UpdateMode="Conditional" ChildrenAsTriggers="false"> <ContentTemplate> <table> <tr> <td>Codigo:</td> <td> <telerik:RadTextBox ID="txtNome" runat="server" TextMode="SingleLine" /> </td> </tr> <tr> <td>Descricao:</td> <td> <telerik:RadTextBox ID="txtDescricao" runat="server" TextMode="SingleLine" /> </td> </tr> <tr> <td> <telerik:RadButton ID="btnInserir" Text="Inserir" runat="server" OnClick="btnInserir_Click" /> <asp:Label Text="" ID="lblResultado" runat="server" /> </td> </tr> </table> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnInserir" EventName="Click" /> </Triggers> </asp:UpdatePanel></div></form>protected void btnTeste_Click(object sender, EventArgs e){ Task task = Task.Run(() => { Thread.Sleep(8000); RadNotification2.Text = "Execução ConcluÃda!"; RadNotification2.Show(); }); task.Wait();}protected void btnInserir_Click(object sender, EventArgs e){ C001 c = new C001(); int i = c.RegistrarDados(txtDescricao.Text); if (i != 0) { lblResultado.Text = "Registro Inserido!"; } else { lblResultado.Text = "Registro nao pode ser Inserido!"; } updForm.Update();}<telerik:RadAjaxLoadingPanel ID="InvDateLoadPanel" runat="server" ForeColor="#EEB211" BackImageUrl="~/images/ajax/BMGI_GoldLoading.gif" BackgroundPosition="Center" /><telerik:RadAjaxManager ID="AjxMgr" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="pnl_InvDate"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="pnl_InvDate" LoadingPanelID="InvDateLoadPanel" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager><asp:Panel ID="pnl_InvDate" runat="server"> <table id="tbl_InvDate" border="0" cellpadding="4" cellspacing="0"> <tr> <td>Invoice Date</td> <td> <telerik:RadDatePicker ID="rdt_InvDate" runat="server" Skin="Hay" AutoPostBack="true" ShowPopupOnFocus="true" Width="100" OnSelectedDateChanged="selected" /> </td> </tr> </table></asp:Panel>
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="G1.aspx.cs" Inherits="G1" %>
<%
@ Register TagPrefix="telerik" Namespace="Telerik.Charting" Assembly="Telerik.Web.UI" %>
<%
@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head id="Head1" runat="server">
<!-- custom head section -->
<style type="text/css">
.viewWrap
{
padding: 15px;
background: #2291b5 0 0 url(Img/bluegradient.gif) repeat-x;
}
.contactWrap
{
padding: 10px 15px 15px 15px;
background: #fff;
color: #333;
}
.contactWrap td
{
padding: 0 20px 0 0;
}
.contactWrap td td
{
padding: 3px 20px 3px 0;
}
.contactWrap img
{
border: 1px solid #05679d;
}
</style>
<!-- end of custom head section -->
</
head>
<
body>
<form id="form1" runat="server">
<div>
<telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />
<%
-- DataSourceID="SqlDataSource1"--%>
<telerik:RadGrid ID="RadGrid1" OnPreRender="RadGrid1_PreRender"
runat="server" AutoGenerateColumns="False" AllowSorting="True" AllowMultiRowSelection="False"
AllowPaging="True" PageSize="5" GridLines="None" ShowGroupPanel="true" OnItemCreated="RadGrid1_ItemCreated"
OnItemCommand="RadGrid1_ItemCommand">
<PagerStyle Mode="NumericPages"></PagerStyle>
<%
-- DataSourceID="SqlDataSource1"--%>
<MasterTableView DataKeyNames="SrNo" AllowMultiColumnSorting="True"
GroupLoadMode="Server">
<NestedViewTemplate>
<asp:Panel runat="server" ID="InnerContainer" CssClass="viewWrap" Visible="false">
<telerik:RadTabStrip runat="server" ID="TabStip1" MultiPageID="Multipage1" SelectedIndex="0">
<Tabs>
<telerik:RadTab runat="server" Text="Comment" PageViewID="PageView2">
</telerik:RadTab>
</Tabs>
</telerik:RadTabStrip>
<telerik:RadMultiPage runat="server" ID="Multipage1" SelectedIndex="0" RenderSelectedPageOnly="false">
<telerik:RadPageView runat="server" ID="PageView2" Width="460px">
<div class="contactWrap">
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Label ID="Label1" Font-Bold="true" Font-Italic="true" Text='<%# Eval("SrNo") %>'
Visible="false" runat="server" />
<asp:DetailsView ID="DetailsView1" DataSourceID="SqlDataSource4" AllowPaging="true" GridLines="None" Width="100%"
runat="server" Font-Italic="true" AutoGenerateRows="false">
<Fields>
<%
-- <asp:BoundField DataFormatString="{0:MM/dd/yyyy}" HeaderText="BirthDate:" HtmlEncode="false"
DataField="BirthDate" HeaderStyle-Font-Italic="false" HeaderStyle-Font-Bold="true" />--
%>
<asp:BoundField HeaderText="Comment" DataField="Comment" HeaderStyle-Font-Italic="false"
HeaderStyle-Font-Bold="true" />
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource4" ConnectionString="<%$ ConnectionStrings:db_TempConnectionString %>"
ProviderName="System.Data.SqlClient" SelectCommand="Select comment from tbApproveHistorical where comment ='first changes'"
runat="server">
<SelectParameters>
<asp:ControlParameter ControlID="Label1" PropertyName="Text" Type="String" Name="SrNo" />
</SelectParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
</div>
</telerik:RadPageView>
</telerik:RadMultiPage>
</asp:Panel>
</NestedViewTemplate>
<Columns>
<%
-- <telerik:GridTemplateColumn Visible="false">
<asp:Label ID="Label1" Font-Bold="true" Font-Italic="true" Text='<%# Eval("SrNo") %>'
Visible="false" runat="server" />
</telerik:GridTemplateColumn>--
%>
<telerik:GridBoundColumn SortExpression="SrNo" HeaderText="SrNo" HeaderButtonType="TextButton"
DataField="SrNo" UniqueName="SrNo" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Period" HeaderText="Period" HeaderButtonType="TextButton"
DataField="Period" UniqueName="Period">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Name" HeaderText="Name" HeaderButtonType="TextButton"
DataField="Name" UniqueName="Name">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Date" HeaderText="Date" HeaderButtonType="TextButton"
DataField="Date" UniqueName="Date">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<ClientSettings AllowDragToGroup="true" />
</telerik:RadGrid>
<%
-- <asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:db_TempConnectionString %>"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT ROW_NUMBER() OVER(ORDER BY AH.UpdatedOn DESC) As SrNo,
PC.PeriodContextRef AS Period,
(UR.UserFirstName + ' ' + UR.UserLastName) AS Name,
AH.Comment,
CONVERT(varchar,AH.UpdatedOn,101) AS [Date]
FROM tbApproveHistorical AH WITH(NOLOCK)
LEFT OUTER JOIN dbIndigo_Central.dbo.tbPeriodCont PC WITH(NOLOCK)
ON (AH.PeriodContextRefId = PC.PeriodContextRefId)
LEFT OUTER JOIN dbIndigo_Central.dbo.tbUser UR WITH(NOLOCK)
ON (AH.LoginId = UR.LoginId)
ORDER BY UpdatedOn DESC"
runat="server"></asp:SqlDataSource>--
%>
</div>
</form>
</
body>
</
html>
-------------------------------------------------------------------------
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
Telerik.Web.UI;
using
System.Web.UI.WebControls;
public
partial class G1 : System.Web.UI.Page
{
//protected void RadChart1_ItemDataBound(object sender, Telerik.Charting.ChartItemDataBoundEventArgs e)
//{
// e.SeriesItem.Name = (string)DataBinder.Eval(e.DataItem, "pName");
//}
 
protected void Page_Load(object sender, EventArgs e)
{
clsGetData obj = new clsGetData();
RadGrid1.DataSource = obj.GetData();
RadGrid1.MasterTableView.DataKeyNames =
new string[] { "SrNo" };
RadGrid1.MasterTableView.DataSource = obj.GetData();
}
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
RadGrid1.MasterTableView.Items[0].Expanded =
true;
RadGrid1.MasterTableView.Items[0].ChildItem.FindControl(
"InnerContainer").Visible = true;
}
}
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.ExpandCollapseCommandName && e.Item is GridDataItem)
{
((
GridDataItem)e.Item).ChildItem.FindControl("InnerContainer").Visible =
!e.Item.Expanded;
}
//clsGetData obj = new clsGetData();
//((GridDataItem)e.Item).ChildItem.FindControl("DetailsView1").DataSource = obj.GetData();
// ((GridDataItem)e.Item).ChildItem.FindControl("DetailsView1").DataBind();
//if (((GridDataItem)e.Item).ChildItem.FindControl("DetailsView1").ClientID=="")
//{ }
}
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
if (e.Item is GridNestedViewItem)
{
e.Item.FindControl(
"InnerContainer").Visible = ((GridNestedViewItem)e.Item).ParentItem.Expanded;
}
}
}