Hi all I have Grid having Child grids inside it and am implementing select / deselect all functionality on it it is working but when I collapse any grid then the record of that grid getting selected too . Please help me out on that I have used a hiddenfield to keep the client id of all checkbox against each record. on Item data bound event. please look in to the code below Let me knoew What else I can try.
<%@ Page Language="C#" MasterPageFile="~/MasterPages/Default.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="MainClass"
Title="Vendor Returns" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder_Content" runat="Server">
<telerik:RadScriptBlock ID="ItemsRadScriptBlock" runat="server">
<script type="text/javascript">
var registeredElements = [];
var selectDeselectAllFlag = true;
function GetRegisteredServerElement() {
try {
var clientIDs = document.getElementById('CheckboxIDsHiddenField').value;
var inputList = clientIDs.split(',');
var clientID = "";
alert(inputList.length);
for (var i = 0; i < (inputList.length) ; i++) {
clientID = inputList[i];
var checkbox = document.getElementById(clientID);
if (checkbox) {
checkbox.checked = selectDeselectAllFlag;
}
}
selectDeselectAllFlag = !selectDeselectAllFlag;
return true;
}
catch (er) {
}
}
</script>
</telerik:RadScriptBlock>
<telerik:RadSplitter ID="splitterMain" runat="server">
<telerik:RadPane ID="panetop" runat="server" SkinID="TopRadPane" Height="80px">
</telerik:RadPane>
<telerik:RadSplitBar ID="RadSplitBar1" runat="server">
</telerik:RadSplitBar>
<telerik:RadPane ID="panebottom" runat="server" SkinID="BottomRadPane" Scrolling="Both">
<asp:Label ID="MessageLabel" runat="server" SkinID="MessageLabel" Visible="false"></asp:Label>
<table width="100%">
<tr>
<td>
<div class="RadGridHorizontalScroll" style="width: auto" id="RadGridTableContainer">
<telerik:RadGrid ID="RadGrid" runat="server" OnItemDataBound="RadGrid_ItemDataBound"
OnNeedDataSource="RadGrid_NeedDataSource" OnDetailTableDataBind="RadGrid_DetailTableDataBind"
OnItemCreated="RadGrid_ItemCreated">
<ClientSettings>
<Selecting AllowRowSelect="True"></Selecting>
<Resizing AllowColumnResize="true" EnableRealTimeResize="true" ResizeGridOnColumnResize="true"
ClipCellContentOnResize="true" />
</ClientSettings>
<MasterTableView CommandItemDisplay="Top" HorizontalAlign="left"
Name="Vendors" HierarchyDefaultExpanded="True" HierarchyLoadMode="Client">
<CommandItemTemplate>
<table class="ContentPaddingLeft">
<tr>
<td class="ButtonSeparator">
<asp:LinkButton ID="SelectDeselectAllLinkButton" runat="server" OnClientClick="return GetRegisteredServerElement();"
Text="Select / Deselect All" SkinID="SmallCommandItemTemplateLinkButton"></asp:LinkButton>
</td>
</tr>
</table>
</CommandItemTemplate>
<Columns>
<telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="">
</telerik:GridBoundColumn>
</Columns>
<ExpandCollapseColumn Visible="False">
<HeaderStyle Width="19px" />
</ExpandCollapseColumn>
<RowIndicatorColumn Visible="False">
<HeaderStyle Width="20px" />
</RowIndicatorColumn>
<DetailTables>
<telerik:GridTableView runat="server" DataKeyNames="VendorID,PartID" Name="VendorReturns"
AllowMultiColumnSorting="true" EnableViewState="true" BorderWidth="1">
<ExpandCollapseColumn Visible="True">
</ExpandCollapseColumn>
<Columns>
<telerik:GridTemplateColumn UniqueName="ShowEditColumn" ItemStyle-Wrap="false" ItemStyle-HorizontalAlign="Left"
HeaderText="" Resizable="false" Reorderable="false" ItemStyle-Width="25px" HeaderStyle-Width="85px">
<ItemTemplate>
<table style="white-space: nowrap">
<tr>
<td style="border: white">
<asp:CheckBox ID="AllowCheckBox" runat="server" />
<telerik:RadScriptBlock ID="VendorReturnRadScriptBlock" runat="server">
</telerik:RadScriptBlock>
</td>
<td style="border: white">
<asp:LinkButton ID="EditLinkButton" Text="Edit" runat="server" SkinID="SmallLinkButton"></asp:LinkButton>
</td>
</tr>
</table>
</ItemTemplate>
<ItemStyle Wrap="true" Width="10px" />
</telerik:GridTemplateColumn>
Some other Columns are here
</Columns>
</telerik:GridTableView>
</DetailTables>
</MasterTableView>
</telerik:RadGrid>
</div>
<telerik:RadAjaxManagerProxy ID="radAjaxProxyManager" runat="server">
</telerik:RadAjaxManagerProxy>
<telerik:RadAjaxLoadingPanel ID="radAjaxLoadingPanel" runat="server" />
</td>
</tr>
</table>
</telerik:RadPane>
</telerik:RadSplitter>
<asp:HiddenField runat="server" ID="CheckboxIDsHiddenField" ClientIDMode="static" />
</asp:Content>
And My CS file is as
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Security;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Text;
public partial class MainClass : PageHandler
{
#region Declarations
String clientid = String.Empty;
StringBuilder _clientIDs = new StringBuilder();
#endregion
#region Event Handlers
protected void Page_PreRender(object sender, EventArgs e)
{
if (_selectDeselectAllLinkButton != null )
{
_selectDeselectAllLinkButton.Enabled = _isChildExist;
}
if (_expandCollapsAllLinkButton != null)
_expandCollapsAllLinkButton.Enabled = _isRowExist;
AlignRadComboBoxTextLeft(Page);
}
protected void Page_Init(object sender, EventArgs e)
{
AddCustomPager(RadGrid);
}
protected void Page_Load(object sender, EventArgs e)
{
MessageLabel.Visible = false;
RadAjaxManager radAjaxManager = RadAjaxManager.GetCurrent(Page);
radAjaxManager.AjaxSettings.AddAjaxSetting(radAjaxManager, CheckboxIDsHiddenField);
radAjaxManager.AjaxSettings.AddAjaxSetting(radAjaxManager, RadGrid);
radAjaxManager.AjaxSettings.AddAjaxSetting(RadGrid, CheckboxIDsHiddenField);
radAjaxManager.AjaxSettings.AddAjaxSetting(RadGrid, MessageLabel);
}
protected void RadGrid_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
try
{
if (e.Item is GridCommandItem)
{
_selectDeselectAllLinkButton = e.Item.FindControl("SelectDeselectAllLinkButton") as LinkButton;
_expandCollapsAllLinkButton = e.Item.FindControl("ExpandCollapsAllLinkButton") as LinkButton;
}
if (e.Item is GridDataItem)
{
GridDataItem dataItem = e.Item as GridDataItem;
if (dataItem != null)
{
CheckBox selectCheckBox = dataItem.FindControl("AllowCheckBox") as CheckBox;
if (selectCheckBox != null)
{
clientid = selectCheckBox.ClientID;
_clientIDs.Append(clientid);
_clientIDs.Append(",");
}
}
_isRowExist = true;
if (e.Item is GridFooterItem)
{
if (_clientIDs.ToString().Length > 0)
{
String clientIDs = _clientIDs.ToString(0, _clientIDs.ToString().Length - 1);
CheckboxIDsHiddenField.Value = clientIDs;
}
}
}
catch (SecurityException ex)
{
ExceptionHandler exceptionHandler = new ExceptionHandler(MessageLabel);
exceptionHandler.HandleException(ex);
}
catch (DataPortalException ex)
{
ExceptionHandler exceptionHandler = new ExceptionHandler(MessageLabel);
exceptionHandler.HandleException(ex);
}
}
protected void ExpandCollapsAllLinkButton_Click(object sender, EventArgs e)
{
foreach (GridDataItem gridItems in RadGrid.MasterTableView.Items)
{
gridItems.Expanded = _flag;
}
_flag = !_flag;
}
protected void UserStoreroomRadComboBox_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
{
RadGrid.Rebind();
}
#endregion
#region Class Functions
}
#endregion
}
Please help me as soon as possible . Thanks in Advance
<%@ Page Language="C#" MasterPageFile="~/MasterPages/Default.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="MainClass"
Title="Vendor Returns" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder_Content" runat="Server">
<telerik:RadScriptBlock ID="ItemsRadScriptBlock" runat="server">
<script type="text/javascript">
var registeredElements = [];
var selectDeselectAllFlag = true;
function GetRegisteredServerElement() {
try {
var clientIDs = document.getElementById('CheckboxIDsHiddenField').value;
var inputList = clientIDs.split(',');
var clientID = "";
alert(inputList.length);
for (var i = 0; i < (inputList.length) ; i++) {
clientID = inputList[i];
var checkbox = document.getElementById(clientID);
if (checkbox) {
checkbox.checked = selectDeselectAllFlag;
}
}
selectDeselectAllFlag = !selectDeselectAllFlag;
return true;
}
catch (er) {
}
}
</script>
</telerik:RadScriptBlock>
<telerik:RadSplitter ID="splitterMain" runat="server">
<telerik:RadPane ID="panetop" runat="server" SkinID="TopRadPane" Height="80px">
</telerik:RadPane>
<telerik:RadSplitBar ID="RadSplitBar1" runat="server">
</telerik:RadSplitBar>
<telerik:RadPane ID="panebottom" runat="server" SkinID="BottomRadPane" Scrolling="Both">
<asp:Label ID="MessageLabel" runat="server" SkinID="MessageLabel" Visible="false"></asp:Label>
<table width="100%">
<tr>
<td>
<div class="RadGridHorizontalScroll" style="width: auto" id="RadGridTableContainer">
<telerik:RadGrid ID="RadGrid" runat="server" OnItemDataBound="RadGrid_ItemDataBound"
OnNeedDataSource="RadGrid_NeedDataSource" OnDetailTableDataBind="RadGrid_DetailTableDataBind"
OnItemCreated="RadGrid_ItemCreated">
<ClientSettings>
<Selecting AllowRowSelect="True"></Selecting>
<Resizing AllowColumnResize="true" EnableRealTimeResize="true" ResizeGridOnColumnResize="true"
ClipCellContentOnResize="true" />
</ClientSettings>
<MasterTableView CommandItemDisplay="Top" HorizontalAlign="left"
Name="Vendors" HierarchyDefaultExpanded="True" HierarchyLoadMode="Client">
<CommandItemTemplate>
<table class="ContentPaddingLeft">
<tr>
<td class="ButtonSeparator">
<asp:LinkButton ID="SelectDeselectAllLinkButton" runat="server" OnClientClick="return GetRegisteredServerElement();"
Text="Select / Deselect All" SkinID="SmallCommandItemTemplateLinkButton"></asp:LinkButton>
</td>
</tr>
</table>
</CommandItemTemplate>
<Columns>
<telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="">
</telerik:GridBoundColumn>
</Columns>
<ExpandCollapseColumn Visible="False">
<HeaderStyle Width="19px" />
</ExpandCollapseColumn>
<RowIndicatorColumn Visible="False">
<HeaderStyle Width="20px" />
</RowIndicatorColumn>
<DetailTables>
<telerik:GridTableView runat="server" DataKeyNames="VendorID,PartID" Name="VendorReturns"
AllowMultiColumnSorting="true" EnableViewState="true" BorderWidth="1">
<ExpandCollapseColumn Visible="True">
</ExpandCollapseColumn>
<Columns>
<telerik:GridTemplateColumn UniqueName="ShowEditColumn" ItemStyle-Wrap="false" ItemStyle-HorizontalAlign="Left"
HeaderText="" Resizable="false" Reorderable="false" ItemStyle-Width="25px" HeaderStyle-Width="85px">
<ItemTemplate>
<table style="white-space: nowrap">
<tr>
<td style="border: white">
<asp:CheckBox ID="AllowCheckBox" runat="server" />
<telerik:RadScriptBlock ID="VendorReturnRadScriptBlock" runat="server">
</telerik:RadScriptBlock>
</td>
<td style="border: white">
<asp:LinkButton ID="EditLinkButton" Text="Edit" runat="server" SkinID="SmallLinkButton"></asp:LinkButton>
</td>
</tr>
</table>
</ItemTemplate>
<ItemStyle Wrap="true" Width="10px" />
</telerik:GridTemplateColumn>
Some other Columns are here
</Columns>
</telerik:GridTableView>
</DetailTables>
</MasterTableView>
</telerik:RadGrid>
</div>
<telerik:RadAjaxManagerProxy ID="radAjaxProxyManager" runat="server">
</telerik:RadAjaxManagerProxy>
<telerik:RadAjaxLoadingPanel ID="radAjaxLoadingPanel" runat="server" />
</td>
</tr>
</table>
</telerik:RadPane>
</telerik:RadSplitter>
<asp:HiddenField runat="server" ID="CheckboxIDsHiddenField" ClientIDMode="static" />
</asp:Content>
And My CS file is as
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Security;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Text;
public partial class MainClass : PageHandler
{
#region Declarations
String clientid = String.Empty;
StringBuilder _clientIDs = new StringBuilder();
#endregion
#region Event Handlers
protected void Page_PreRender(object sender, EventArgs e)
{
if (_selectDeselectAllLinkButton != null )
{
_selectDeselectAllLinkButton.Enabled = _isChildExist;
}
if (_expandCollapsAllLinkButton != null)
_expandCollapsAllLinkButton.Enabled = _isRowExist;
AlignRadComboBoxTextLeft(Page);
}
protected void Page_Init(object sender, EventArgs e)
{
AddCustomPager(RadGrid);
}
protected void Page_Load(object sender, EventArgs e)
{
MessageLabel.Visible = false;
RadAjaxManager radAjaxManager = RadAjaxManager.GetCurrent(Page);
radAjaxManager.AjaxSettings.AddAjaxSetting(radAjaxManager, CheckboxIDsHiddenField);
radAjaxManager.AjaxSettings.AddAjaxSetting(radAjaxManager, RadGrid);
radAjaxManager.AjaxSettings.AddAjaxSetting(RadGrid, CheckboxIDsHiddenField);
radAjaxManager.AjaxSettings.AddAjaxSetting(RadGrid, MessageLabel);
}
protected void RadGrid_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
try
{
if (e.Item is GridCommandItem)
{
_selectDeselectAllLinkButton = e.Item.FindControl("SelectDeselectAllLinkButton") as LinkButton;
_expandCollapsAllLinkButton = e.Item.FindControl("ExpandCollapsAllLinkButton") as LinkButton;
}
if (e.Item is GridDataItem)
{
GridDataItem dataItem = e.Item as GridDataItem;
if (dataItem != null)
{
CheckBox selectCheckBox = dataItem.FindControl("AllowCheckBox") as CheckBox;
if (selectCheckBox != null)
{
clientid = selectCheckBox.ClientID;
_clientIDs.Append(clientid);
_clientIDs.Append(",");
}
}
_isRowExist = true;
if (e.Item is GridFooterItem)
{
if (_clientIDs.ToString().Length > 0)
{
String clientIDs = _clientIDs.ToString(0, _clientIDs.ToString().Length - 1);
CheckboxIDsHiddenField.Value = clientIDs;
}
}
}
catch (SecurityException ex)
{
ExceptionHandler exceptionHandler = new ExceptionHandler(MessageLabel);
exceptionHandler.HandleException(ex);
}
catch (DataPortalException ex)
{
ExceptionHandler exceptionHandler = new ExceptionHandler(MessageLabel);
exceptionHandler.HandleException(ex);
}
}
protected void ExpandCollapsAllLinkButton_Click(object sender, EventArgs e)
{
foreach (GridDataItem gridItems in RadGrid.MasterTableView.Items)
{
gridItems.Expanded = _flag;
}
_flag = !_flag;
}
protected void UserStoreroomRadComboBox_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
{
RadGrid.Rebind();
}
#endregion
#region Class Functions
}
#endregion
}
Please help me as soon as possible . Thanks in Advance