【发布时间】:2012-05-10 14:49:44
【问题描述】:
我使用this MSDN link 中的代码在我的GridView 上实现了排序,其中DataTable 作为DataSource。但是,当我单击任何列时,我的网格第一次排序,之后它不会在单击任何其他列时排序。
PageLoad() 事件中的代码 -
if (!Page.IsPostBack)
{
HView hv = new HView ();
DataTable HTable = new DataTable("hTable");
HTable = hv.FillTable();
Session["hTable"] = HTable;
GridView2.DataSource = Session["hTable"];
GridView2.DataBind();
}
排序事件中的代码 -
protected void GridView2_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable notesDT = Session["hTable"] as DataTable;
if (notesDT != null)
{
notesDT.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortDirection);
GridView2.DataSource = Session["hTable"];
GridView2.DataBind();
}
}
有人知道我做错了什么吗?
编辑:我刚刚意识到这一点。如果我选择一个特定的行,我有另一个视图,其中填充了有关该行的详细信息。当我在尝试对任何列进行排序之前先查看一些行详细信息时,排序工作得非常好,任意次数。但是,如果我在选择一行之前尝试排序,它只能工作一次。
【问题讨论】:
-
你有没有在
GridView2_Sorting中设置断点,看是否调用过,Session["hTable"]是否为空? -
@TimSchmelter 是的,我已经检查过了,Session["hTable"] 不为空,它确实是第一次排序.. 之后,它也不为空,就是这样让我感到困惑,没有什么“似乎”错了..
标签: asp.net gridview datatable