【发布时间】:2014-08-06 10:45:13
【问题描述】:
我使用 List 作为从数据库返回的一些数据的容器,如下所示:
List<BookInfo> result {get;set;}
protected void SearchButton_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
result = (new BookInfo()).Search(TextBox1.Text);
ListView1.DataSource = result;
ListView1.DataBind();
}
}
一切正常。但是当我尝试在其他事件中对这个列表进行排序时,它是空的。
protected void ListView1_Sorting(object sender, ListViewSortEventArgs e)
{
IComparer<BookInfo> comparer = new BookInfoOrdering();
if (result != null)
{
result.Sort(comparer);
}
ListView1.DataSource = result;
ListView1.DataBind();
}
我只是想知道为什么会这样。一种解决方法是调用搜索方法,重新获取数据,但不是没有必要吗?
【问题讨论】:
-
结果的范围是什么?这里没有足够的信息来查看任何明显的问题
-
我猜这很可能发生在两个单独的回发中,并且
result没有第二次(重新)填充。 -
显示 Page_Load 代码....
-
好的,这显然是一个回发问题。有没有办法在回发之间填充
result?我认为这会比再次从数据库中获取数据要快一些.. -
根据有多少用户将同时使用您的网站,您可以将列表存储在会话中,但还有更好的替代方案。
标签: c# asp.net list eventhandler