Hello,
My sort stops working after the user moves to a different page. So, once I sort a column, it sorts correctly on
the first page, when the user moves to a different page, the sort is lost. I am using AllowCustomSorting.
Please help.
Here are all my important code snippets:
My grid:
<telerik:RadGrid ID="gvPolicyResults" runat="server" Visible="false" AllowSorting="true"
AutoGenerateColumns="false" OnItemCommand="gvPolicyResults_RowCommand" OnPageIndexChanged="gvPolicyResults_PageIndexChanged"
OnNeedDataSource="gvPolicyResults_NeedDataSource" OnItemCreated="gvPolicyResults_ItemCreated"
Width="100%" BorderWidth="0" CellPadding="0" CellSpacing="0" HeaderStyle-CssClass="DataColumnHeader1"
HeaderStyle-HorizontalAlign="Left" AllowFilteringByColumn="true"
PageSize="50" PagerStyle-Mode="NextPrevAndNumeric" PagerStyle-Position="TopAndBottom"
OnSortCommand="gvPolicyResults_SortCommand" AllowPaging="true" >
<MasterTableView DataKeyNames="PolicyReference" AllowCustomSorting="true">
Methods:
protected void gvPolicyResults_PageIndexChanged(object sender, GridPageChangedEventArgs e)
{
gvPolicyResults.CurrentPageIndex = e.NewPageIndex;
gvPolicyResults.Rebind();
}
protected void gvPolicyResults_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
gvPolicyResults.DataSource = GetPolicyResults();
}
protected void gvPolicyResults_SortCommand(object source, GridSortCommandEventArgs e)
{
if ("EffectiveDate".Equals(e.CommandArgument))
{
DataView dv = GetPolicyResults();
switch (e.OldSortOrder)
{
case GridSortOrder.None:
dv.Sort = "[EffectiveDateSort] DESC";
e.Item.OwnerTableView.DataSource = dv;
e.Item.OwnerTableView.Rebind();
break;
case GridSortOrder.Ascending:
dv.Sort = "[EffectiveDateSort] ASC";
e.Item.OwnerTableView.DataSource = dv;
e.Item.OwnerTableView.Rebind();
break;
case GridSortOrder.Descending:
dv.Sort = "[EffectiveDateSort] DESC";
e.Item.OwnerTableView.DataSource = dv;
e.Item.OwnerTableView.Rebind();
break;
}
}
else if ("PolicyReference".Equals(e.CommandArgument))
{
DataView dv = GetPolicyResults();
switch (e.OldSortOrder)
{
case GridSortOrder.None:
dv.Sort = "[PolicyReference] DESC";
e.Item.OwnerTableView.DataSource = dv;
e.Item.OwnerTableView.Rebind();
break;
case GridSortOrder.Ascending:
dv.Sort = "[PolicyReference] ASC";
e.Item.OwnerTableView.DataSource = dv;
e.Item.OwnerTableView.Rebind();
break;
case GridSortOrder.Descending:
dv.Sort = "[PolicyReference] DESC";
e.Item.OwnerTableView.DataSource = dv;
e.Item.OwnerTableView.Rebind();
break;
}
}
}