Requirements |
|
RadControls version | 2008.01.0415.20 |
.NET version | 2 |
Visual Studio version | 2005 |
programming language | C# |
browser support |
all browsers supported by RadControls |
PROJECT DESCRIPTION
This project presents how to add a select/deselect all option for selecting all rows in a grouped Grid by means of a CheckBox residing in the Grid header along with individual group selection. To accomplish this task a CheckBox is added to the Grid header inside the ItemCreated event handler. Set the AutoPostBack property of the CheckBox control to true and intercept the action execution
in the CheckChanged event of the CheckBox.
ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> |
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head runat="server"> |
<title>Untitled Page</title> |
</head> |
<body> |
<form id="form1" runat="server"> |
<asp:ScriptManager ID="ScriptManager1" runat="server" /> |
<br /> |
<div> |
<telerik:RadGrid ID="RadGrid1" runat="server" AllowMultiRowSelection="true" DataSourceID="SqlDataSource1" GridLines="None" AutoGenerateColumns="False" OnItemCreated="RadGrid1_ItemCreated" Skin="Hay"> |
<MasterTableView DataSourceID="SqlDataSource1"> |
<RowIndicatorColumn Visible="False"> |
<HeaderStyle Width="20px" /> |
</RowIndicatorColumn> |
<ExpandCollapseColumn Resizable="False" Visible="False"> |
<HeaderStyle Width="20px" /> |
</ExpandCollapseColumn> |
<GroupByExpressions> |
<telerik:GridGroupByExpression> |
<GroupByFields> |
<telerik:GridGroupByField FieldName="Country" FieldAlias="Country" /> |
</GroupByFields> |
<SelectFields> |
<telerik:GridGroupByField FieldName="Country" FieldAlias="Country" /> |
</SelectFields> |
</telerik:GridGroupByExpression> |
</GroupByExpressions> |
<Columns> |
<telerik:GridBoundColumn DataField="CustomerID" HeaderText="CustomerID" DataType="System.Int32" SortExpression="CustomerID" |
UniqueName="CustomerID"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" |
UniqueName="CompanyName"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Country" HeaderText="Country" SortExpression="Country" UniqueName="Country"> |
</telerik:GridBoundColumn> |
</Columns> |
<EditFormSettings> |
<PopUpSettings ScrollBars="None" /> |
</EditFormSettings> |
</MasterTableView> |
</telerik:RadGrid><br /> |
<br /> |
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthWindConnectionString %>" |
SelectCommand="SELECT [CustomerID], [CompanyName], [Country] FROM [ Customers]"></asp:SqlDataSource> |
</div> |
</form> |
</body> |
</html> |
C#:
using System; |
using System.Data; |
using System.Configuration; |
using System.Web; |
using System.Web.Security; |
using System.Web.UI; |
using System.Web.UI.WebControls; |
using System.Web.UI.WebControls.WebParts; |
using System.Web.UI.HtmlControls; |
using Telerik.Web.UI; |
public partial class _Default : System.Web.UI.Page |
{ |
protected void Page_Load(object sender, EventArgs e) |
{ |
} |
protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e) |
{ |
if (e.Item is GridHeaderItem) |
{ |
GridHeaderItem header = (GridHeaderItem)e.Item; |
CheckBox headerchkbx = new CheckBox(); |
headerchkbx.ID = "CheckBox2"; |
headerchkbx.AutoPostBack = true; |
headerchkbx.CheckedChanged += new EventHandler(headerchkbx_CheckedChanged); |
header["column"].Controls.Add(headerchkbx); |
} |
if (e.Item is GridGroupHeaderItem) |
{ |
GridGroupHeaderItem header = (GridGroupHeaderItem)e.Item; |
CheckBox groupchkbx = new CheckBox(); |
groupchkbx.ID = "CheckBox1"; |
groupchkbx.AutoPostBack = true; |
groupchkbx.CheckedChanged += new EventHandler(groupchkbx_CheckedChanged); |
header.Controls[0].Controls.Add(groupchkbx); |
} |
} |
void headerchkbx_CheckedChanged(object sender, EventArgs e) |
{ |
foreach (GridDataItem item in RadGrid1.MasterTableView.Items) |
{ |
CheckBox headerchkbx = (CheckBox)sender; |
foreach (GridGroupHeaderItem groupHeader in RadGrid1.MasterTableView.GetItems(GridItemType.GroupHeader)) |
{ |
GridItem[] children = groupHeader.GetChildItems(); |
CheckBox groupchkbx = (CheckBox)groupHeader.Controls[0].FindControl("CheckBox1"); |
if (headerchkbx.Checked) |
{ |
item.Selected = true; |
groupchkbx.Checked = true; |
} |
else |
{ |
item.Selected = false; |
groupchkbx.Checked = false; |
} |
} |
} |
} |
void groupchkbx_CheckedChanged(object sender, EventArgs e) |
{ |
int chkCount = 0; |
foreach (GridGroupHeaderItem groupHeader in RadGrid1.MasterTableView.GetItems(GridItemType.GroupHeader)) |
{ |
GridItem[] children = groupHeader.GetChildItems(); |
CheckBox groupchkbx = (CheckBox)groupHeader.Controls[0].FindControl("CheckBox1"); |
if ((groupchkbx.Checked)) |
{ |
chkCount++; |
} |
foreach (GridItem child in children) |
{ |
GridDataItem dataItem = child as GridDataItem; |
dataItem.Selected = groupchkbx.Checked; |
foreach (GridHeaderItem item in RadGrid1.MasterTableView.GetItems(GridItemType.Header)) |
{ |
CheckBox headerchkbx = (CheckBox)item["column"].FindControl("CheckBox2"); |
if ((!groupchkbx.Checked)) |
{ |
headerchkbx.Checked = false; |
} |
if (RadGrid1.MasterTableView.GetItems(GridItemType.GroupHeader).Length == chkCount) |
{ |
headerchkbx.Checked = true; |
} |
} |
} |
} |
} |
} |