fre*_*hie 2 c# asp.net sorting data-binding gridview
我有一个gridview,我绑定了列表中的linq查询的结果.在我的代码后面,我然后将gridview与列表绑定
MyGrid.DataSource = MyList;
MyGrid.DataBind();
Run Code Online (Sandbox Code Playgroud)
我也有启用排序的网格:
<asp:GridView ID="MyGrid" AllowSorting="True" OnSorting="SortMyGrid">
Run Code Online (Sandbox Code Playgroud)
在后面的代码中,我将事件处理程序设置如下:
protected void MyGrid(object sender, GridViewSortEventArgs e)
{
var NewDataSource = from d in MyList
orderby e.SortExpression
select d;
}
Run Code Online (Sandbox Code Playgroud)
现在问题是当事件处理程序接管时MyList为null!我正在跟踪它并且我看到它加载正常,我在页面上看到了具有正确数据的gridview,但是当我单击列标题对网格进行排序时,MyList变为null!为什么??是什么导致了这个问题?
绑定数据后,源会在下一个事件中"丢失".如果您需要保留它,可以将其放入会话中并在需要时将其拉出.
编辑 嗯,"丢失"这个词听起来很刺耳,但不再引用了.无论你有什么引用(最有可能是页面加载),你都可以这样做:
MyGrid.DataSource = MyList;
MyGrid.DataBind();
Session["MyList"] = MyList;
Run Code Online (Sandbox Code Playgroud)
然后,在您的事件处理程序中(当您再次需要它时),将其拉回:
List<MyObjectType> MyList = Session["MyList"] as List<MyObjectType>;
Run Code Online (Sandbox Code Playgroud)
List<MyObjectType>列表的类型在哪里.这Session基本上是一个字典,这就是为什么你可以在其中存储任何东西,但你必须在出路时投出它.
| 归档时间: |
|
| 查看次数: |
4393 次 |
| 最近记录: |