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

Client Select Column Select All Problem

1 Answer 131 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Teoman
Top achievements
Rank 1
Teoman asked on 15 Mar 2012, 12:03 AM
Hi,

i have a client select column and grid paging is on.when i click checkbox in the header it selects all the rows but when i move in the second page result couldnt be selected.and when i return page 1 all my selected row was removed.how can i fix this?

thanks. 

1 Answer, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 15 Mar 2012, 06:08 AM
Hello Teoman,

RadGrid loses its current selection when the data is sorted, a new group or filter is added, or when the current page changes. In order to persist the selected rows, you can attach ItemCommand event handler and store the values in a session variable. In the pre-render event of the grid, traverse the rows of the grid and compare their key values to the values saved in the Session variable.
C#:
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]["ProductID"].ToString()))
        {
          dataItem.Selected = true;
          break;
        }
      }
    }
  }
 }
}
 
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 == RadGrid.SelectCommandName && e.Item is GridDataItem)
     {
       GridDataItem dataItem = (GridDataItem)e.Item;
       string productID = dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["ProductID"].ToString();
       selectedItems.Add(productID);
       Session["selectedItems"] = selectedItems;
     }
        if (e.CommandName == RadGrid.DeselectCommandName && e.Item is GridDataItem)
        {
            GridDataItem dataItem = (GridDataItem)e.Item;
            string productID = dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["ProductID"].ToString();
            selectedItems.Remove(productID);
            Session["selectedItems"] = selectedItems;
        }
    }
}

This code snippet demonstrates how to persist selected rows from the server side. In order to achieve this from the client side and to know more, please visit this documentation.
Hope this helps.

Thanks,
Shinu.
Tags
Grid
Asked by
Teoman
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Share this question
or