排序后的gridviewdatakeys枚举为空
本文关键字:枚举 gridviewdatakeys 排序 | 更新日期: 2023-09-27 17:49:24
我使用下面的代码对GridView进行了编程排序:
grdCars.Sort(grdCars.Columns[3].ToString(), SortDirection.Ascending);
然而,当我去得到DataKeys值之后使用下面的代码:
grdCars.DataKeys[i].Value.ToString()
它抛出一个"System.ArgumentOutOfRangeException"
作为DataKeys的"枚举没有产生结果",即它在排序后被擦除。
有谁能纠正一下吗?我可以编程排序Gridview不删除DataKeys枚举?
Data Source属性不是往返之间持久状态的一部分,这就是它的值丢失的原因。如果您正在使用排序事件设置会话变量,请将其设置为排序方向,并在重新绑定数据源时使用它。
protected void gridview_Sortingevent()
{
// BIND Data with Gridview
GridViewDataBind();
DataTable dt = gridview.DataSource as DataTable;
if (dt != null)
{
//Sort the data.
dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
Session["sessionsort"] = dt.DefaultView.Sort;
gridview.DataSource = dt;
gridview.DataBind();
}
}
绑定到网格视图
private void GridViewDataBind()
{
DataTable dt = GetDataTable();
if (Session["sessionsort"] != null)
{
//Sort the data.
dt.DefaultView.Sort = Session["sessionsort"].ToString();
}
gridview.DataSource = dt;
gridview.DataBind();
}