C# code
protected void GridView_ReferedDataDetail_Sorting(object sender, GridViewSortEventArgs e) { DataTable DataTable_GridView_ReferedDataDetail = (DataTable)ViewState["DataTable_GridView_ReferedDataDetail"]; DataView DataViewRefereDataDetail = DataTable_GridView_ReferedDataDetail.DefaultView; if (ViewState["DataTable_GridView_ReferedDataDetail"]!= null) { if (ViewState["GridView_ReferedDataDetail_SortDirection"].ToString() == "Asc") { ViewState["GridView_ReferedDataDetail_SortDirection"] = "Desc"; string MySortDirection = "Desc"; string MySortExpression = e.SortExpression + " " + MySortDirection; DataViewRefereDataDetail.Sort = MySortExpression; } else { ViewState["GridView_ReferedDataDetail_SortDirection"] = "Asc"; string MySortDirection = "Asc"; string MySortExpression = e.SortExpression + " " + MySortDirection; DataViewRefereDataDetail.Sort = MySortExpression; } } GridView_ReferedDataDetail.DataSource = DataViewRefereDataDetail; GridView_ReferedDataDetail.DataBind(); }


其中红色部分是在GridView的数据绑定时,在ViewState中记录GridView的试图状态


体会:
1、在写程序或检查错误时一定要细心。比如我在方法一中就将 " "写成了"",将其中的空格丢弃了
2、差错时,Visual Studio给出的错误和排错提示很重要,一定要仔细看看。
3、对于GridView,如果其数据源不是数据源控件,而是在后台程序中自定义的数据源,在进行数据绑定的同时,应该在ViewState中记录GridView的试图状态(如果需要的话,比如用于Sorting事件),否则,在GridView的Sorting事件中再调用GridView的相关属性将是Null
4、GridView的有关属性可能都是针对数据源控件的,比如在
C# code
protected void GridView_ReferedDataDetail_Sorting(object sender, GridViewSortEventArgs e)
中e.SortDirection。比方如果我在GridView列表头中点击第一次Sorting事件,此时e.SortDirection默认值为SortDirection.Ascending,在后台程序中我处理第一次Sorting事件,将e.SortDirection赋值为SortDirection.Descending,然后,再第二次点击GridView列表头中相同的列表头,此时,按我思路e.SortDirection的值应该是SortDirection.Descending,然而实际上e.SortDirection依然是其默认值SortDirection.Ascending,也就是说在处理第一Sorting事件中对e.SortDirection的赋值根本没有被保留。
posted on 2009-06-24 14:24  sweting  阅读(174)  评论(0编辑  收藏  举报