I have a Grid where I select a row. When I select a row I want to capture the email address that's displayed in the Grid. I typically use a SqlDataSource as the data source for my Grids and don't have any trouble getting the value from a cell on a selected row, but this time I had to use a DataTable. Please help me modify my code so that I may capture the email address from the selected row on the Grid.
Here is the Grid markup:
<telerik:RadGrid ID="rgAdUsrs" runat="server" AutoGenerateColumns="false" AllowPaging="true" AllowSorting="true" AllowFilteringByColumn="true" ShowGroupPanel="true" Skin="Office2010Black" OnSelectedIndexChanged="rgAdUsrs_SelectedIndexChanged" GroupingSettings-CaseSensitive="false"> <ClientSettings AllowDragToGroup="true" AllowColumnsReorder="true" ReorderColumnsOnClient="true"></ClientSettings> <MasterTableView> <PagerStyle PageSizes="10, 25, 50, 100, 250, 400" AlwaysVisible="true" /> <Columns> <telerik:GridButtonColumn ButtonType="LinkButton" Text="Select" CommandName="Select"></telerik:GridButtonColumn> <telerik:GridBoundColumn DataField="givenName" HeaderText="First Name" SortExpression="givenName" UniqueName="givenName" FilterControlAltText="Filter givenName column" HeaderStyle-Font-Bold="true" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="sn" HeaderText="Last Name" SortExpression="sn" UniqueName="sn" FilterControlAltText="Filter sn column" HeaderStyle-Font-Bold="true" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="mail" HeaderText="Email" SortExpression="mail" UniqueName="mail" FilterControlAltText="Filter mail column" HeaderStyle-Font-Bold="true" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="department" HeaderText="Department" SortExpression="department" UniqueName="department" FilterControlAltText="Filter department column" HeaderStyle-Font-Bold="true" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="manager" HeaderText="Manager" SortExpression="manager" UniqueName="manager" FilterControlAltText="Filter manager column" HeaderStyle-Font-Bold="true" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"></telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid>
Here is the code behind for the SelectedIndexChanged event:
protected void rgAdUsrs_SelectedIndexChanged(object sender, EventArgs e) { foreach (GridDataItem item in rgAdUsrs.SelectedItems) { repidtxttest.Text = item["mail"].Text; hdnRepId.Value = item["mail"].Text; hdnRepGivenName.Value = item["givenName"].Text; hdnRepSn.Value = item["sn"].Text; hdnRepDept.Value = item["department"].Text; hdnRepsMgr.Value = item["manager"].Text; } }
Here is the code from the data table:
DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[5] { new DataColumn("givenName", typeof (string)), new DataColumn("sn", typeof (string)), new DataColumn("mail", typeof (string)), new DataColumn("department", typeof (string)), new DataColumn("manager", typeof (string)) }); using (var context = new PrincipalContext(ContextType.Domain, null)) { using (var group = (GroupPrincipal.FindByIdentity(context, "Group1"))) { var users = group.GetMembers(true); foreach (UserPrincipal user in users) { DirectoryEntry de = user.GetUnderlyingObject() as DirectoryEntry; dt.Rows.Add ( Convert.ToString(de.Properties["givenName"].Value), Convert.ToString(de.Properties["sn"].Value), Convert.ToString(de.Properties["mail"].Value), Convert.ToString(de.Properties["department"].Value), Regex.Replace((Convert.ToString(de.Properties["manager"].Value)), @"CN=([^,]*),.*$", "$1") ); } rgAdUsrs.DataSource = dt; rgAdUsrs.DataBind(); } }
