本文向大家介绍C#实现DataGrid排序功能,可能好多人还不了解DataGrid排序功能,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。
在.Net 中C#实现DataGrid排序功能,但并不支持双向的排序。用到了,看了些相关的帖子,自己尝试了一种方法。竟然也行得通,主要是用DataGrid.Attributes 存了一个参数,同时在onSortCommand中修改了DataGridColumn的SortExpression. 代码如下:
- private void BindData()
- {
- DataTable dt = .......;
- if(dt != null)
- {
- DataView dv = dt.DefaultView;
- if(DataGrid1.Attributes["SortBy"] != null)
- {
- dv.Sort = DataGrid1.Attributes["SortBy"];
- }
- DataGrid1.DataSource = dv;
- DataGrid1.DataBind();
- }
- }
- private void DataGridSort(object source, System.Web.UI.
WebControls.DataGridSortCommandEventArgs e)- {
- DataGrid1.Attributes["SortBy"] = sortstr;
- this.BindData();
- //找到排序的列,并修改把它的排序属性
- DataGridColumn clm = null;
- for(int i=0;i<DataGrid1.Columns.Count;i++)
- {
- if(DataGrid1.Columns[i].SortExpression == e.SortExpression )
- {
- clm = DataGrid1.Columns[i];
- break;
- }
- }
- if(clm == null) return;
- if(e.SortExpression.ToLower().IndexOf("desc") > 0)
- {
- clm.SortExpression = e.SortExpression.ToLower().Replace("desc","asc");
- }
- else
- {
- if(e.SortExpression.ToLower().IndexOf("asc") > 0)
- {
- clm.SortExpression = e.SortExpression.ToLower().Replace("asc","desc");
- }
- else
- {
- clm.SortExpression = e.SortExpression.ToLower() + " desc";
- }
- }
- }
以上介绍C#实现DataGrid排序功能。
【编辑推荐】