排序后的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枚举?

排序后的gridviewdatakeys枚举为空

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();
}