Hi,
I'm using a RadGrid with a GridClientSelectColumn.
If I call server-side the Grid.Rebind() method, I can preserve the selected items:
But how can I do this when the user clicks the "Update" button (which fires the RebindGrid command)?
Thanks!
I'm using a RadGrid with a GridClientSelectColumn.
If I call server-side the Grid.Rebind() method, I can preserve the selected items:
var selectedItems = Grid.MasterTableView.GetSelectedItems()
.Select(item =>
int
.Parse(item[
"idCol"
].Text))
.ToList();
Grid.Rebind();
foreach
(GridDataItem item
in
Grid.MasterTableView.Items)
{
item.Selected = selectedItems.Contains(
int
.Parse(item[
"idCol"
].Text));
}
But how can I do this when the user clicks the "Update" button (which fires the RebindGrid command)?
Thanks!
3 Answers, 1 is accepted
0
Shinu
Top achievements
Rank 2
answered on 04 Dec 2013, 02:01 PM
Hi ,
Im not sure about your requirement, i guess you are using GridClientSelectColumn, to select some rows and you want it to be persisting across pages and on Update. Please try the below is a sample code snippet .
ASPX:
C#:
Thanks,
Shinu
Im not sure about your requirement, i guess you are using GridClientSelectColumn, to select some rows and you want it to be persisting across pages and on Update. Please try the below is a sample code snippet .
ASPX:
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowPaging
=
"True"
AllowSorting
=
"True"
AllowMultiRowSelection
=
"True"
AutoGenerateEditColumn
=
"true"
OnItemCommand
=
"RadGrid1_ItemCommand"
OnPreRender
=
"RadGrid1_PreRender"
OnItemCreated
=
"RadGrid1_ItemCreated"
>
<
MasterTableView
DataKeyNames
=
"CustomerID"
CommandItemDisplay
=
"Top"
>
<
Columns
>
<
telerik:GridClientSelectColumn
UniqueName
=
"ClientSelectColumn"
/>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
Selecting-AllowRowSelect
=
"true"
EnablePostBackOnRowClick
=
"true"
Selecting-UseClientSelectColumnOnly
=
"true"
>
</
ClientSettings
>
</
telerik:RadGrid
>
C#:
ArrayList selectedItems;
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
Session.Clear();
}
}
protected
void
RadGrid1_ItemCommand(
object
source, GridCommandEventArgs e)
{
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][
"CustomerID"
].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][
"CustomerID"
].ToString()))
{
dataItem.Selected =
true
;
break
;
}
}
}
}
}
}
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridHeaderItem)
{
GridHeaderItem headerItem = (GridHeaderItem)e.Item;
CheckBox chk = (CheckBox)headerItem[
"ClientSelectColumn"
].Controls[0];
if
(chk.Checked)
{
GridDataItem dataItem = (GridDataItem)e.Item;
string
customerID = dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex][
"CustomerID"
].ToString();
if
(dataItem.Selected)
{
selectedItems.Add(customerID);
Session[
"selectedItems"
] = selectedItems;
}
}
}
}
Thanks,
Shinu
0
JP
Top achievements
Rank 1
answered on 05 Dec 2013, 12:24 PM
Thanks for your answer, I tried your approach and it is working but for one case: I want to get the SelectedRows in page's OnPreRender, but after the update command it still returns nothing because the Grid's PreRender is executed after the page's OnPreRender. I need some event handler where I can set the seelcted rows which is executed during every postback before the page's OnPreRender method.
Thanks!
Thanks!
0
Hello Jan-Patrick,
You can check out the following sample:
http://www.telerik.com/community/code-library/aspnet-ajax/grid/get-selected-items-through-all-pages.aspx
Which uses this approach:
http://www.telerik.com/help/aspnet-ajax/grid-persist-selected-rows-client-sorting-paging-grouping-filtering.html
Hope this helps.
Regards,
Eyup
Telerik
You can check out the following sample:
http://www.telerik.com/community/code-library/aspnet-ajax/grid/get-selected-items-through-all-pages.aspx
Which uses this approach:
http://www.telerik.com/help/aspnet-ajax/grid-persist-selected-rows-client-sorting-paging-grouping-filtering.html
Hope this helps.
Regards,
Eyup
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.