or
<telerik:RadGrid ID="RadGrid2" DataSourceID="XXX" runat="server" AllowSorting="True" AutoGenerateColumns="False" GridLines="None"> <GroupHeaderItemStyle HorizontalAlign="Left" /> <MasterTableView Width="100%" AutoGenerateColumns="False" DataSourceID="dbNDriveSecuritySqlDataSource" GroupsDefaultExpanded="False"> <Columns> <telerik:GridBoundColumn DataField="sub_folder_path" FilterControlAltText="Filter sub_folder_path column" HeaderText="sub_folder_path" SortExpression="sub_folder_path" UniqueName="sub_folder_path"> <ItemStyle HorizontalAlign="Left" /> </telerik:GridBoundColumn> <telerik:GridHyperLinkColumn DataNavigateUrlFields="group_manager" DataNavigateUrlFormatString="groupinfo.aspx?group={0}" DataTextField="group_manager" FilterControlAltText="Filter column column" HeaderText="Group Manager" UniqueName="column"> <ItemStyle HorizontalAlign="Left" /> </telerik:GridHyperLinkColumn> <telerik:GridBoundColumn DataField="ServerName" FilterControlAltText="Filter ServerName column" HeaderText="ServerName" SortExpression="ServerName" UniqueName="ServerName"> <ItemStyle HorizontalAlign="Left" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="main_folder_path" FilterControlAltText="Filter main_folder_path column" HeaderText="main_folder_path" SortExpression="main_folder_path" UniqueName="main_folder_path" Visible="False"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="group_manager" FilterControlAltText="Filter group_manager column" HeaderText="group_manager" SortExpression="group_manager" UniqueName="group_manager" Visible="False"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn HeaderText="Access Type"> <ItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" Text="Access to Read" OnCheckedChanged="CheckBox1_ChangeCheck" AutoPostBack="true" /> <asp:CheckBox ID="CheckBox2" runat="server" Text="Access to Modify" OnCheckedChanged="CheckBox2_ChangeCheck" AutoPostBack="true" /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="securityGroupR" FilterControlAltText="Filter securityGroupR column" HeaderText="securityGroupR" SortExpression="securityGroupR" UniqueName="securityGroupR" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="securityGroupM" FilterControlAltText="Filter securityGroupM column" HeaderText="securityGroupM" SortExpression="securityGroupM" UniqueName="securityGroupM" Visible="false"> </telerik:GridBoundColumn> </Columns> <GroupByExpressions> <telerik:GridGroupByExpression> <SelectFields> <telerik:GridGroupByField FieldAlias="main_folder_path" FieldName="main_folder_path" /> </SelectFields> <GroupByFields> <telerik:GridGroupByField FieldName="main_folder_path" /> </GroupByFields> </telerik:GridGroupByExpression> </GroupByExpressions> <EditFormSettings> <EditColumn FilterControlAltText="filter editcommandcolumn column"> </EditColumn> </EditFormSettings> </MasterTableView> <FilterMenu EnableImageSprites="false"> </FilterMenu> </telerik:RadGrid>protected void rgMaster_Init(object sender, EventArgs e){ GridTableView gtv = sender as GridTableView; gtv.CommandItemDisplay = UserInfo.IsInRole(PortalSettings.AdministratorRoleName) ? GridCommandItemDisplay.Top : GridCommandItemDisplay.None;}protected void rgAgencies_NeedDataSource(object sender, GridNeedDataSourceEventArgs e){ using (EXSCInternshipsDataContext dbContext = new EXSCInternshipsDataContext()) { rgAgencies.DataSource = dbContext.Agencies.Where(a => !a.AgencyDeleted).ToList(); }}protected void rgSpecifications_NeedDataSource(object sender, GridNeedDataSourceEventArgs e){ RadGrid rg = sender as RadGrid; GridDataItem item = ((GridNestedViewItem)rg.NamingContainer).ParentItem as GridDataItem; using (EXSCInternshipsDataContext dbContext = new EXSCInternshipsDataContext()) { Agency agency = dbContext.Agencies.Single(a => a.AgencyID == Convert.ToInt32(item.GetDataKeyValue("AgencyID"))); IEnumerable<InternshipSpecification> list = agency.InternshipSpecifications.ToList(); if (list.Count() == 0) rg.Visible = UserInfo.IsInRole(PortalSettings.AdministratorRoleName); else rg.DataSource = agency.InternshipSpecifications.ToList(); }}protected void rgAgencies_ItemDataBound(object sender, GridItemEventArgs e){ if (e.Item is GridDataItem) { GridDataItem item = e.Item as GridDataItem; using (EXSCInternshipsDataContext dbContext = new EXSCInternshipsDataContext()) { Agency agency = dbContext.Agencies.Single(a => a.AgencyID == Convert.ToInt32(item.GetDataKeyValue("AgencyID"))); RadRating rr = item["Rating"].Controls.OfType<RadRating>().Single(); IEnumerable<Score> ratings = agency.AForms.Select(a => a.Internship). Where(i => i.InternshipGFormID.HasValue && i.GForm.OverallScore.ScoreValue != Score.NA). Select(i => i.GForm.OverallScore).ToList(); if (ratings.Count() == 0) rr.Enabled = false; else rr.Value = ratings.Select(s => s.ScoreValue - 1).Average(i => (decimal)i); } }}protected void rgAgencies_ItemCommand(object sender, GridCommandEventArgs e){ if (e.CommandName == "InitInsert") { e.Canceled = true; rwEditAgency.VisibleOnPageLoad = true; loadAgencyData(null); } else if (e.CommandName == "Edit") { e.Canceled = true; rwEditAgency.VisibleOnPageLoad = true; using (EXSCInternshipsDataContext dbContext = new EXSCInternshipsDataContext()) { Agency agency = dbContext.Agencies.Single(a => a.AgencyID == Convert.ToInt32((e.Item as GridEditableItem).GetDataKeyValue("AgencyID"))); loadAgencyData(agency); } } else if (e.CommandName == "Delete") { using (EXSCInternshipsDataContext dbContext = new EXSCInternshipsDataContext()) { Agency agency = dbContext.Agencies.Single(a => a.AgencyID == Convert.ToInt32((e.Item as GridEditableItem).GetDataKeyValue("AgencyID"))); agency.AgencyDeleted = true; dbContext.SubmitChanges(); } }}protected void rgPreRender(object sender, EventArgs e){ RadGrid rg = sender as RadGrid; rg.Columns.FindByUniqueName("Buttons").Visible = UserInfo.IsInRole(PortalSettings.AdministratorRoleName);}