This is a migrated thread and some comments may be shown as answers.

[Solved] persist the state of checked record on clientside(for single/multiple/header check)during paging,pagesize change

1 Answer 62 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Swapnil
Top achievements
Rank 1
Swapnil asked on 20 Aug 2013, 05:16 AM
Hi all,
I want To persist the state of checked record on clientside(for single/multiple/header check)during paging,pagesize change and get the USERID associated with such records on button click?
i did it for server side please check it
<%@ Page Title="" Language="C#" MasterPageFile="~/ReportAdmin.Master" AutoEventWireup="true"
    CodeFile="GroupUserCreation.aspx.cs" Inherits="GroupUserCreation" %>
 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <br />
    <center>
        <telerik:RadComboBox ID="cmbgroupname" runat="server" Width="250px" EmptyMessage="             Select Group"
            ExpandAnimation-Type="OutBounce" Skin="Default">
        </telerik:RadComboBox>
        <asp:RequiredFieldValidator ID="rfv1" runat="server" ErrorMessage="*" Font-Size="Larger"
            SetFocusOnError="true" ValidationGroup="val" ControlToValidate="cmbgroupname"
            Font-Bold="true" ForeColor="Red"></asp:RequiredFieldValidator>
        <br />
        <br />
        <div>
        </div>
        <telerik:RadGrid ID="RadGrid1" runat="server" AllowMultiRowSelection="True" AllowPaging="True"
            PageSize="5" AllowSorting="True" OnNeedDataSource="RadGrid1_NeedDataSource" CellSpacing="0"
            GridLines="None" ShowGroupPanel="True" Skin="Default" OnItemCommand="RadGrid1_ItemCommand"
            OnPreRender="RadGrid1_PreRender">
            <PagerStyle Mode="NextPrevAndNumeric" AlwaysVisible="true"></PagerStyle>
            <ClientSettings Selecting-AllowRowSelect="true" AllowDragToGroup="True" EnablePostBackOnRowClick="true">
                <Selecting AllowRowSelect="True" UseClientSelectColumnOnly="True"></Selecting>
            </ClientSettings>
            <MasterTableView DataKeyNames="UserId">
                <Columns>
                    <telerik:GridClientSelectColumn UniqueName="ClientSelectColumn" />
                </Columns>
                <PagerStyle AlwaysVisible="True"></PagerStyle>
            </MasterTableView>
        </telerik:RadGrid>
        <br />
        <asp:Button ID="Button1" runat="server" Text="Save" OnClick="Button1_Click" Width="130px"
            Height="25px" ValidationGroup="val" />
        <br />
    </center>
</asp:Content>
and
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using Telerik.Web.UI;
using System.Collections;
 
 
public partial class GroupUserCreation : System.Web.UI.Page
{
    Globas obj = new Globas();
    CheckBox chkbox = new CheckBox();
    string GroupId="";
 
     
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
 
            Session.Clear();
            DataTable dt1 = obj.GroupDetails();
            cmbgroupname.DataSource = dt1;
            cmbgroupname.DataTextField = "GroupName";
            cmbgroupname.DataValueField = "GroupId";
            cmbgroupname.DataBind();
        }
 
        foreach (GridHeaderItem headerItem in RadGrid1.MasterTableView.GetItems(GridItemType.Header))
        {
            CheckBox chk = (CheckBox)headerItem.FindControl("ClientSelectColumn");
        }
 
        
    }
 
    protected void Button1_Click(object sender, EventArgs e)
    {
 
        if (Session["selectedItems"] != null)
    {
        ArrayList selectedItems = (ArrayList)Session["selectedItems"];
        Int16 stackIndex;
        for (stackIndex = 0; stackIndex <= selectedItems.Count - 1; stackIndex++)
        {
            RadGrid1.AllowPaging = false;
            RadGrid1.Rebind();
            string curItem = selectedItems[stackIndex].ToString();
            foreach (GridItem item in RadGrid1.MasterTableView.Items)
            {
                if (item is GridDataItem)
                {
                    GridDataItem dataItem = (GridDataItem)item;
                    if (curItem.Equals(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["UserId"].ToString()))
                    {                         
                        dataItem.Selected = true;
                        Response.Write(curItem);//Datakey value of the selcted items
                        Response.Write("<br/>");
                        //Code To Insert
                        break;
                    }
                }
            }
        }        
    }
    RadGrid1.AllowPaging = true;
    RadGrid1.Rebind();
 
            }
 
    protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        DataTable dt = obj.UserDetails();
        RadGrid1.DataSource = dt;
      
    }
 
 
 
    protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
    {
        ArrayList selectedItems;
        if (Session["selectedItems"] == null)
        {
            selectedItems = new ArrayList();
        }
        else
        {
            selectedItems = (ArrayList)Session["selectedItems"];
        }
        if (e.CommandName == "RowClick")
        {
            GridDataItem dataItem = (GridDataItem)e.Item;
            string customerID = dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["UserId"].ToString();
            if (dataItem.Selected)
            {
                selectedItems.Add(customerID);
                Session["selectedItems"] = selectedItems;
            }
            else
            {
                selectedItems.Remove(customerID);
                Session["selectedItems"] = selectedItems;
            }
        }
    }
    protected void RadGrid1_PreRender(object sender, EventArgs e)
    {
        if (Session["selectedItems"] != null)
        {
            ArrayList selectedItems = (ArrayList)Session["selectedItems"];
            Int16 stackIndex;
            for (stackIndex = 0; stackIndex <= selectedItems.Count - 1; stackIndex++)
            {
                string curItem = selectedItems[stackIndex].ToString();
                foreach (GridItem item in RadGrid1.MasterTableView.Items)
                {
                    if (item is GridDataItem)
                    {
                        GridDataItem dataItem = (GridDataItem)item;
                        if (curItem.Equals(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["UserId"].ToString()))
                        {
                            dataItem.Selected = true;
                            break;
                        }
                    }
                }
            }
        }
    }
}
Plz give response quickly,
Thanks

1 Answer, 1 is accepted

Sort by
0
Marin
Telerik team
answered on 22 Aug 2013, 10:34 AM
Hello,

 I checked the server-side code and the approach there looks ok. On the client-side the grid also has OnRowSelected and OnRowDeselected events that you can use to perform operations upon row selection. Generally the clients-side approach would also involve persisting the data about the selected rows on the server (e.g. in a Session object as in your server-side code). So you would need to send the data about the selected rows from the client - back to the server. For example this can be done by storing the data in a ASP.NET hidden field which would be posted back to the server where you can perform the necessary operations.

Regards,
Marin
Telerik
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
Tags
Grid
Asked by
Swapnil
Top achievements
Rank 1
Answers by
Marin
Telerik team
Share this question
or