or
<%@ Register TagPrefix="telerik" Namespace="Telerik.QuickStart" %><%@ Register TagPrefix="telerik" Namespace="Telerik.WebControls" Assembly="RadAjax.NET2" %><%@ Register TagPrefix="telerik" Namespace="Telerik.WebControls" Assembly="RadGrid.NET2" %><tr> <td class="text-bold" align="right" colspan="2"> <br /> <asp:LinkButton ID="lnkExcelExportMaster" runat="server" Text="Export to Excel (Master Data)" ToolTip="Export to Excel (Master Data)" OnClick="lnkExcelMaster_OnClick" Font-Underline="true"></asp:LinkButton> <asp:LinkButton ID="lnkExcelExport" runat="server" Text="Export to Excel" ToolTip="Export to Excel" OnClick="lnkExcel_OnClick" Font-Underline="true"></asp:LinkButton> </td> </tr> <tr> <td colspan="2"> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="grdAccomodationDetails"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="grdAccomodationDetails" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadGrid ID="grdAccomodationDetails" runat="server" Skin="Web20" Width="95%" ShowStatusBar="true" AutoGenerateColumns="False" PageSize="30" AllowSorting="True" AllowMultiRowSelection="False" AllowPaging="True" OnDetailTableDataBind="grdAccomodationDetails_DetailTableDataBind" OnNeedDataSource="grdAccomodationDetails_NeedDataSource" OnItemCreated="grdAccomodationDetails_ItemCreated"> <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> <MasterTableView Width="100%" DataKeyNames="AccomodationId" AllowMultiColumnSorting="True"> <DetailTables> <telerik:GridTableView DataKeyNames="AccomodationDetailsId" Name="InnerAccomodationDetails" Width="80%" AutoGenerateColumns="false"> <Columns> <telerik:GridBoundColumn SortExpression="Name" HeaderText="Full Name" HeaderButtonType="TextButton" DataField="Name" ItemStyle-Width="25%"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="RegistrationNumber" HeaderText="Registration Number" HeaderButtonType="TextButton" DataField="RegistrationNumber" ItemStyle-Width="15%"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="Sex" HeaderText="Sex" HeaderButtonType="TextButton" DataField="Sex" ItemStyle-Width="5%"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="Age" HeaderText="Age" HeaderButtonType="TextButton" DataField="Age" ItemStyle-Width="5%"> </telerik:GridBoundColumn> </Columns> </telerik:GridTableView> </DetailTables> <Columns> <telerik:GridBoundColumn SortExpression="AccomodationId" HeaderText="Accomodation Id" HeaderButtonType="TextButton" DataField="AccomodationId" ItemStyle-Width="15%"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="FirstName" HeaderText="First Name" HeaderButtonType="TextButton" DataField="FirstName"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="MiddleName" HeaderText="Middle Name" HeaderButtonType="TextButton" DataField="MiddleName"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="LastName" HeaderText="Last Name" HeaderButtonType="TextButton" DataField="LastName"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="MobileNumber" HeaderText="Mobile Number" HeaderButtonType="TextButton" DataField="MobileNumber"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="CountofPeople" HeaderText="Total Count" HeaderButtonType="TextButton" DataField="CountofPeople"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="Address" HeaderText="Address" HeaderButtonType="TextButton" DataField="Address" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="ResidenceNumber" HeaderText="Residence Number" HeaderButtonType="TextButton" DataField="ResidenceNumber" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="EmailAddress" HeaderText="Email Address" HeaderButtonType="TextButton" DataField="EmailAddress" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn Visible="false" HeaderText="Arrival Date" HeaderButtonType="TextButton" HeaderStyle-HorizontalAlign="Center" DataField="ArrivalDate" DataFormatString="{0:MMM dd, yyyy}"> </telerik:GridBoundColumn> <telerik:GridBoundColumn Visible="false" HeaderText="Departure Date" HeaderButtonType="TextButton" HeaderStyle-HorizontalAlign="Center" DataField="DepartureDate" DataFormatString="{0:MMM dd, yyyy}"> </telerik:GridBoundColumn> </Columns> </MasterTableView> <ClientSettings ReorderColumnsOnClient="True" AllowDragToGroup="True" AllowColumnsReorder="True"> <Selecting AllowRowSelect="true" /> <Resizing AllowRowResize="False" AllowColumnResize="True"></Resizing> </ClientSettings> </telerik:RadGrid> <br /> </td> </tr>#region ===== NeedDataSource Event of Grid ===== protected void grdAccomodationDetails_NeedDataSource(object source, Telerik.WebControls.GridNeedDataSourceEventArgs e) { try { if (!e.IsFromDetailTable) { grdAccomodationDetails.DataSource = megautsav.GetMegaUtsavAccomodations(); } } catch (Exception ex) { LogHandler.LogError(long.Parse(Session["UserId"].ToString()), LogHandler.APPLICATION_ERROR, ex.StackTrace.ToString(), ex.Message.ToString()); Response.Redirect("../Error.aspx?errmsg=" + HttpUtility.UrlEncode(ex.Message.ToString())); } } #endregion #region ===== Binding Detail Tables of Grid ===== protected void grdAccomodationDetails_DetailTableDataBind(object source, Telerik.WebControls.GridDetailTableDataBindEventArgs e) { try { Telerik.WebControls.GridDataItem dataItem = (Telerik.WebControls.GridDataItem)e.DetailTableView.ParentItem; switch (e.DetailTableView.Name) { case "InnerAccomodationDetails": { string accomodationId = dataItem.GetDataKeyValue("AccomodationId").ToString(); e.DetailTableView.DataSource = megautsav.GetMegaUtsavAccomodationDetails(int.Parse(accomodationId)); break; } } } catch (Exception ex) { LogHandler.LogError(long.Parse(Session["UserId"].ToString()), LogHandler.APPLICATION_ERROR, ex.StackTrace.ToString(), ex.Message.ToString()); Response.Redirect("../Error.aspx?errmsg=" + HttpUtility.UrlEncode(ex.Message.ToString())); } } #endregion #region ===== ItemCreated Event of Grid ===== protected void grdAccomodationDetails_ItemCreated(object source, Telerik.WebControls.GridItemEventArgs e) { if (isExport && (e.Item.ItemType == Telerik.WebControls.GridItemType.Item || e.Item.ItemType == Telerik.WebControls.GridItemType.AlternatingItem || e.Item.ItemType == Telerik.WebControls.GridItemType.Header)) { e.Item.Cells[0].Visible = false; } } #endregion #region ===== Click of Export to Excel Linkbutton ===== protected void lnkExcel_OnClick(object sender, EventArgs e) { try { isExport = true; grdAccomodationDetails.ExportSettings.ExportOnlyData = true; grdAccomodationDetails.ExportSettings.OpenInNewWindow = true; string fileName = "MegaMahotsav Accomodation Details"; grdAccomodationDetails.ExportSettings.FileName = fileName; grdAccomodationDetails.MasterTableView.Width = Unit.Pixel(300); grdAccomodationDetails.MasterTableView.CommandItemDisplay = Telerik.WebControls.GridCommandItemDisplay.None; grdAccomodationDetails.MasterTableView.ShowFooter = false; grdAccomodationDetails.MasterTableView.ClearEditItems(); grdAccomodationDetails.MasterTableView.ClearSelectedItems(); grdAccomodationDetails.MasterTableView.HierarchyDefaultExpanded = true; grdAccomodationDetails.MasterTableView.AllowPaging = false; foreach (Telerik.WebControls.GridBoundColumn column in grdAccomodationDetails.MasterTableView.Columns) { column.Visible = true; } grdAccomodationDetails.Rebind(); grdAccomodationDetails.GridLines = GridLines.Both; grdAccomodationDetails.MasterTableView.ExportToExcel(); grdAccomodationDetails.MasterTableView.AllowPaging = true; } catch (Exception ex) { throw (ex); } } #endregion #region ===== Click of Export to Excel (Master Data) Linkbutton ===== protected void lnkExcelMaster_OnClick(object sender, EventArgs e) { try { isExport = true; grdAccomodationDetails.ExportSettings.ExportOnlyData = true; grdAccomodationDetails.ExportSettings.OpenInNewWindow = true; string fileName = "MegaMahotsav Accomodation Details Master"; grdAccomodationDetails.ExportSettings.FileName = fileName; grdAccomodationDetails.MasterTableView.Width = Unit.Pixel(300); grdAccomodationDetails.MasterTableView.CommandItemDisplay = Telerik.WebControls.GridCommandItemDisplay.None; grdAccomodationDetails.MasterTableView.ShowFooter = false; grdAccomodationDetails.MasterTableView.ClearEditItems(); grdAccomodationDetails.MasterTableView.ClearSelectedItems(); grdAccomodationDetails.MasterTableView.HierarchyDefaultExpanded = false; grdAccomodationDetails.MasterTableView.AllowPaging = false; foreach (Telerik.WebControls.GridBoundColumn column in grdAccomodationDetails.MasterTableView.Columns) { column.Visible = true; } grdAccomodationDetails.Rebind(); grdAccomodationDetails.GridLines = GridLines.Both; grdAccomodationDetails.MasterTableView.ExportToExcel(); grdAccomodationDetails.MasterTableView.AllowPaging = true; } catch (Exception ex) { throw (ex); } } #endregionRadComboBox1.DataSource = Context.GetItems()sch = from h in Context.LktSchoolYearOutcomesENT where !h.Deleted orderby h.LkSchoolYearOutcomeENT.SchoolYearOutcome ascending select new NameValuePair { Name = h.LkSchoolYearOutcomeENT.SchoolYearOutcome, Value = h.LkSchoolYearOutcomeENT.OutcomeId };<head> <link rel="stylesheet" type="text/css" href="../../App_Themes/GuSkin/GU.css"> <link rel="stylesheet" type="text/css" href="../../App_Themes/GuSkin/GUIE.css"> <link rel="stylesheet" type="text/css" href="../../App_Themes/GuSkin/guPrestation.css"> <title>Title</title> <meta content="no-cache" http-equiv="Pragma"> <meta content="-1" http-equiv="Expires"> <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"> <style type="text/css"> /* FIX FOR IE 8 Font inconsistency*/ .RadForm .riTextBox { font-family: "Segoe UI", Arial, Helvetica, sans-serif !important; } </style> <link rel="stylesheet" type="text/css" href="/mysite/Telerik.Web.UI.WebResource.axd?compress=1&_TSM_CombinedScripts_=%3b%3bGuTelerikSkins%3afr-CH%3aebb84cb8-7274-41c6-ae46-f01325da7dfd%3a342f89e1%3ab5feda7d%3ac6c2ea7f%3a13647808%3a696827c7%3bTelerik.Web.UI%2c+Version%3d2010.2.713.40%2c+Culture%3dneutral%2c+PublicKeyToken%3d121fae78165ba3d4%3afr-CH%3a1814ab69-dbf3-46be-b5e4-1b4e7d85f183%3aef4a543%3aed2942d4%3aaac1aeb7%3ac73cf106%3ac86a4a06%3a4c651af2%3a1c2121e%3ae24b8e95%3a9e1572d6%3a8cee9284%3aed057d30%3aa3b7d93f%3ab2b77c33%3a5c10e89c%3a4d471440%3a169db17e%3a1f65231b%3a7f7626a2%3a92753c09%3a91f742eb"></head>
Quick question - What's the best way to access a control in a nested GridTableView (specifically lblPassword below) in the code behind? The password is encrypted in the database and I need to decrypt before displaying on the web page.
<telerik:RadGrid runat="server" ID="gridDatabases" AutoGenerateColumns="False" GridLines="None" Skin="Windows7" Width="100%" DataSourceID="LinqDataSourceDatabases" OnItemDataBound="gridDatabases_ItemDataBound"> <MasterTableView DataSourceID="LinqDataSourceDatabases" DataKeyNames="ID"> <DetailTables> <telerik:GridTableView DataKeyNames="ID" DataSourceID="LinqDataSourceUsers" runat="server"> <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="ID" MasterKeyField="DatabaseDetailID" /> </ParentTableRelation> <Columns> <telerik:GridBoundColumn DataField="UserName" HeaderText="User Name" SortExpression="UserName" UniqueName="UserName" /> <telerik:GridTemplateColumn HeaderText="Password"> <ItemTemplate> <asp:Label runat="server" ID="lblPassword" /> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </telerik:GridTableView> </DetailTables> <ExpandCollapseColumn Visible="True"> </ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn DataField="DatabaseName" HeaderText="Database" /> </Columns> </MasterTableView> </telerik:RadGrid>
I thought I could use the OnItemDatabound event, like this, but I can't seem call FindControl to drill down to get to the nested label control. This is basically what I'm trying to accomplish, and this would work if the control wasn't in a nested table.
protected void gridUserDetails_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item.ItemType == GridItemType.Item || e.Item.ItemType == GridItemType.AlternatingItem) { GridDataItem gridItem = (GridDataItem)e.Item; UserDetail userDetail = (UserDetail)gridItem.DataItem; Label lblPassword = (Label)gridItem.FindControl("lblPassword"); string decryptedPassword = DecryptPassword(userDetail.Password); lblPassword.Text = decryptedPassword; } }<script type="text/javascript"> Telerik.Web.UI.RadAsyncUpload.Modules.Flash.isAvailable = function() { return false; } </script> <telerik:RadAsyncUpload runat="server" ID="rauResume" Skin="Office2007" ReadOnlyFileInputs="true" MultipleFileSelection="Disabled" MaxFileInputsCount="1" MaxFileSize="409" > </telerik:RadAsyncUpload>