Unable to select records from only expanded grids in multiple grids

3 posts, 0 answers
  1. Shubham
    Shubham avatar
    32 posts
    Member since:
    May 2013

    Posted 26 May 2014 Link to this post

    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


  2. Shubham
    Shubham avatar
    32 posts
    Member since:
    May 2013

    Posted 29 May 2014 Link to this post

    Please reply soon This is very Important . I have to do it ASAP .
  3. Angel Petrov
    Admin
    Angel Petrov avatar
    1034 posts

    Posted 29 May 2014 Link to this post

    Hi Shubham,

    Using the code provided I have assembled a sample website but did not notice any abnormalities in the control behavior. Could you please examine the attachment and tell us what differs in your case? Additionally I would like to ask you to prepare for us a video which illustrates the exact behavior. That way we will be able to get a better understanding of the exact problem.

    Regards,
    Angel Petrov
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
Back to Top