4 Answers, 1 is accepted
0
Accepted
Shinu
Top achievements
Rank 2
answered on 22 Oct 2008, 05:42 AM
Hi,
Try using a GridTemplateColumn with a Checkbox in the HeaderTemplate and ItemTemplate for selecting the Grid rows instead of using GridClientSelectColumn. So that you can check the header checkbox in the ItemCommand event. Here I have added a button in the commandItemTemplate and in its click event I am accessing the header check box and checking it.
ASPX:
CS:
// code to select all rows on clicking the header CheckBox
CS:
//code to check all rows on clicking the linkbutton in the CommanditemTemplate.
Thanks
Shinu.
Try using a GridTemplateColumn with a Checkbox in the HeaderTemplate and ItemTemplate for selecting the Grid rows instead of using GridClientSelectColumn. So that you can check the header checkbox in the ItemCommand event. Here I have added a button in the commandItemTemplate and in its click event I am accessing the header check box and checking it.
ASPX:
<MasterTableView DataSourceID="SqlDataSource1" CommandItemDisplay="top" > |
<CommandItemTemplate> |
<asp:LinkButton ID="LinkButton1" runat="server" Text="Check" CommandName="Check" ></asp:LinkButton> |
</CommandItemTemplate> |
<Columns> |
<telerik:GridTemplateColumn HeaderText="TempCol" DataField="ProductName" UniqueName="TempCol" > |
<HeaderTemplate> |
<asp:CheckBox ID="CheckBox2" AutoPostBack="true" runat="server" /> |
</HeaderTemplate> |
<ItemTemplate> |
<asp:CheckBox ID="CheckBox1" AutoPostBack="true" runat="server" /> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
</Columns> |
</MasterTableView> |
CS:
// code to select all rows on clicking the header CheckBox
protected void RadGrid1_PreRender(object sender, EventArgs e) |
{ |
foreach (GridHeaderItem header in RadGrid1.MasterTableView.GetItems(GridItemType.Header)) |
{ |
CheckBox chkbx = (CheckBox)header["SelectCol"].Controls[0]; |
if (chkbx.Checked) |
{ |
foreach (GridDataItem item in RadGrid1.MasterTableView.Items) |
{ |
item.Selected = true; |
} |
} |
} |
} |
CS:
//code to check all rows on clicking the linkbutton in the CommanditemTemplate.
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e) |
{ |
if (e.CommandName == "Check") |
{ |
foreach (GridHeaderItem header in RadGrid1.MasterTableView.GetItems(GridItemType.Header)) |
{ |
CheckBox chkbx = (CheckBox)header["SelectCol"].Controls[0]; |
chkbx.Checked = true; |
} |
} |
} |
Thanks
Shinu.
0
codispdp
Top achievements
Rank 1
answered on 22 Oct 2008, 06:54 PM
Shinu,
Thanks I have the check/uncheck all function working now with a HeaderTemplate and ItemTemplate for the dataitems. I am using the RadGrid hierarchy model and the persistence of checked items and header item using ViewState. I have everything working except when a GridDataItem is uncheck in the detailsTable I am trying too access the GridHeaderItem checkbox for that GridDataItem to remove the UniqueID of the header Checkbox control to remove it from the ViewState. Is there a way to access the details table gridheader from the sender object of the itemtemplate checkbox?
Thanks again
Thanks I have the check/uncheck all function working now with a HeaderTemplate and ItemTemplate for the dataitems. I am using the RadGrid hierarchy model and the persistence of checked items and header item using ViewState. I have everything working except when a GridDataItem is uncheck in the detailsTable I am trying too access the GridHeaderItem checkbox for that GridDataItem to remove the UniqueID of the header Checkbox control to remove it from the ViewState. Is there a way to access the details table gridheader from the sender object of the itemtemplate checkbox?
Thanks again
<telerik:RadGrid |
ID="rgProjects" |
runat="server" |
Skin="WebBlue" |
Width="95%" |
CellPadding="1" |
CellSpacing="0" |
PageSize="100" |
AllowPaging="True" |
AllowSorting="True" |
ShowStatusBar="true" |
AllowMultiRowSelection="True" |
AutoGenerateColumns="False"> |
<PagerStyle Mode="NumericPages"></PagerStyle> |
<MasterTableView Width="100%" DataKeyNames="Profile_Num" AllowMultiColumnSorting="True" Name=ProjectProfile> |
<Columns> |
<telerik:GridTemplateColumn UniqueName="MasterTemplate" > |
<HeaderTemplate> |
<asp:CheckBox ID="headerChkbox" AutoPostBack="true" runat="server" OnCheckedChanged="ToggleSelectedState" /> |
</HeaderTemplate> |
<ItemTemplate> |
<asp:CheckBox ID="cbChecked" Runat="server" AutoPostBack="True" OnCheckedChanged="CheckChanged" /> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridBoundColumn SortExpression="PROJECT_NUMBER" HeaderText="Project" HeaderButtonType="TextButton" DataField="PROJECT_NUMBER" /> |
<telerik:GridBoundColumn SortExpression="PROFILE_NUM" HeaderText="Profile" HeaderButtonType="TextButton" DataField="PROFILE_NUM" /> |
<telerik:GridBoundColumn SortExpression="LOGO" HeaderText="Logo" HeaderButtonType="TextButton" DataField="LOGO" /> |
<telerik:GridBoundColumn SortExpression="COORDINATOR_NAME" HeaderText="Coord" HeaderButtonType="TextButton" DataField="COORDINATOR_NAME" /> |
<telerik:GridBoundColumn SortExpression="DESCRIPTION" HeaderText="Profile Description" HeaderButtonType="TextButton" DataField="DESCRIPTION" /> |
<telerik:GridBoundColumn SortExpression="REGION_DESC" HeaderText="Region" HeaderButtonType="TextButton" DataField="REGION_DESC" /> |
<telerik:GridBoundColumn SortExpression="CREATOR" HeaderText="Created By" HeaderButtonType="TextButton" DataField="CREATOR" /> |
</Columns> |
<DetailTables> |
<telerik:GridTableView DataKeyNames="TASK_NUMBER" Name="Tasks" Width="100%"> |
<Columns> |
<telerik:GridTemplateColumn UniqueName="ChildTemplate" > |
<HeaderTemplate> |
<asp:CheckBox ID="headerChkbox" AutoPostBack="true" runat="server" OnCheckedChanged="ToggleSelectedState" /> |
</HeaderTemplate> |
<ItemTemplate> |
<asp:CheckBox id="cbChecked" Runat="server" AutoPostBack="True" OnCheckedChanged="CheckChanged" /> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridBoundColumn DataField="TASK_DESCRIPTION_B" HeaderText="Task Description" HeaderButtonType="TextButton" /> |
<telerik:GridBoundColumn DataField="GROUP_ASSIGNED" HeaderText="Grp" HeaderButtonType="TextButton" /> |
<telerik:GridBoundColumn DataField="COMPLETED_FLAG" HeaderText="Cmp" HeaderButtonType="TextButton" /> |
<telerik:GridBoundColumn DataField="USER_COMPLETED" HeaderText="User Completed" HeaderButtonType="TextButton" /> |
<telerik:GridBoundColumn DataField="DATE_COMPLETED" HeaderText="Date Completed" HeaderButtonType="TextButton" /> |
<telerik:GridBoundColumn DataField="ACTIVE_FLAG" HeaderText="Act" HeaderButtonType="TextButton" /> |
<telerik:GridBoundColumn DataField="DATE_ACTIVATED" HeaderText="Date Activated" HeaderButtonType="TextButton" /> |
<telerik:GridBoundColumn DataField="TASK_NUMBER" HeaderText="Task#" HeaderButtonType="TextButton" /> |
<telerik:GridBoundColumn DataField="DATE_CREATED" HeaderText="Date Created" HeaderButtonType="TextButton" /> |
</Columns> |
</telerik:GridTableView> |
</DetailTables> |
</MasterTableView> |
</telerik:RadGrid> |
Private ReadOnly Property ProfilesChecked() As Hashtable | |
Get | |
Dim res As Object = ViewState("_pc") | |
If (res Is Nothing) Then | |
res = New Hashtable | |
ViewState("_pc") = res | |
End If | |
Return CType(res, Hashtable) | |
End Get | |
End Property | |
Private ReadOnly Property TasksChecked() As Hashtable | |
Get | |
Dim res As Object = ViewState("_tc") | |
If (res Is Nothing) Then | |
res = New Hashtable | |
ViewState("_tc") = res | |
End If | |
Return CType(res, Hashtable) | |
End Get | |
End Property | |
Private ReadOnly Property TasksHeaderChecked() As Hashtable | |
Get | |
Dim res As Object = ViewState("_thc") | |
If (res Is Nothing) Then | |
res = New Hashtable | |
ViewState("_thc") = res | |
End If | |
Return CType(res, Hashtable) | |
End Get | |
End Property | |
Protected Sub CheckChanged(ByVal sender As Object, ByVal e As System.EventArgs) | |
Dim sDataKey As String = Nothing | |
Dim target As Hashtable = Nothing | |
Dim sTemplate As String = Nothing | |
Dim box As CheckBox = CType(sender, CheckBox) | |
Dim item As GridDataItem = CType(box.NamingContainer, GridDataItem) | |
Dim hitem As GridHeaderItem = CType(item.NamingContainer, GridHeaderItem) | |
Select Case item.OwnerTableView.Name | |
Case "ProjectProfile" | |
sTemplate = "MasterTemplate" | |
target = ProfilesChecked | |
sDataKey = "Profile_Num" | |
Case "Tasks" | |
sTemplate = "ChildTemplate" | |
target = TasksChecked | |
sDataKey = "Task_Number" | |
End Select | |
If box.Checked Then | |
target(item(sDataKey).Text) = True | |
item.Selected = True | |
Else | |
target.Remove(item(sDataKey).Text) | |
item.Selected = False | |
'TasksHeaderChecked.Clear() | |
End If | |
End Sub | |
Protected Sub ToggleSelectedState(ByVal sender As Object, ByVal e As EventArgs) | |
Dim sTemplate As String = Nothing | |
Dim sDataKey As String = Nothing | |
Dim target As Hashtable = Nothing | |
Dim box As CheckBox = DirectCast(sender, CheckBox) | |
Dim hItem As GridHeaderItem = DirectCast(box.NamingContainer, GridHeaderItem) | |
Select Case hItem.OwnerTableView.Name | |
Case "ProjectProfile" | |
sTemplate = "MasterTemplate" | |
sDataKey = "Profile_Num" | |
target = ProfilesChecked | |
Case "Tasks" | |
sTemplate = "ChildTemplate" | |
sDataKey = "Task_Number" | |
target = TasksChecked | |
If box.Checked Then | |
TasksHeaderChecked(CType(hItem("ChildTemplate").FindControl("headerChkbox"), CheckBox).UniqueID) = True | |
Else | |
TasksHeaderChecked.Remove(CType(hItem("ChildTemplate").FindControl("headerChkbox"), CheckBox).UniqueID) | |
End If | |
End Select | |
For Each Item As GridDataItem In hItem.OwnerTableView.Items | |
Item.Selected = box.Checked | |
TryCast(Item(sTemplate).Controls(1), CheckBox).Checked = box.Checked | |
If box.Checked Then | |
target(Item(sDataKey).Text) = True | |
Else | |
target.Remove(Item(sDataKey).Text) | |
End If | |
Next | |
End Sub | |
Private Sub rgProjects_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles rgProjects.ItemDataBound | |
If TypeOf e.Item Is GridDataItem Then | |
Dim item As GridDataItem = CType(e.Item, GridDataItem) | |
Dim box As CheckBox = CType(item.FindControl("cbChecked"), CheckBox) | |
Dim isChecked As Object = Nothing | |
Select Case item.OwnerTableView.Name | |
Case "ProjectProfile" | |
isChecked = ProfilesChecked(item("Profile_Num").Text) | |
Case "Tasks" | |
isChecked = TasksChecked(item("Task_Number").Text) | |
End Select | |
If Not (isChecked Is Nothing) Then | |
item.Selected = CType(isChecked, Boolean) = True | |
box.Checked = CType(isChecked, Boolean) = True | |
End If | |
End If | |
If (TypeOf e.Item Is GridHeaderItem) And e.Item.OwnerTableView.Name = "Tasks" Then | |
Dim header As GridHeaderItem = CType(e.Item, GridHeaderItem) | |
Dim chkbx As CheckBox = DirectCast(header("ChildTemplate").FindControl("headerChkbox"), CheckBox) | |
chkbx.Checked = TasksHeaderChecked(chkbx.UniqueID) | |
End If | |
End Sub | |
0
Accepted
Shinu
Top achievements
Rank 2
answered on 23 Oct 2008, 05:00 AM
Hi,
Give a try with the following code snippet and see if it helps.
CS:
Thanks
Shinu.
Give a try with the following code snippet and see if it helps.
CS:
protected void cbChecked_CheckedChanged(object sender, EventArgs e) |
{ |
CheckBox chkbx = (CheckBox)sender; |
GridDataItem childItem = (GridDataItem)chkbx.NamingContainer; |
GridTableView ChiltTable = (GridTableView)childItem.OwnerTableView; |
foreach(GridHeaderItem header in ChiltTable.GetItems(GridItemType.Header) ) |
{ |
CheckBox headChkBx = (CheckBox)header["ChildTemplate"].FindControl("headerChkbox"); |
headChkBx.Checked = chkbx.Checked; |
} |
} |
Thanks
Shinu.
0
codispdp
Top achievements
Rank 1
answered on 23 Oct 2008, 11:12 AM
Shinu,
Perfect that did the trick.
Thanks
Dan
Perfect that did the trick.
Thanks
Dan