【发布时间】:2011-07-25 07:10:30
【问题描述】:
如何在 GridView 中实现双向排序,条件是我的 GridView 不是绑定到 SQL 而是绑定到 datatable-column-row 和数据集。
谢谢!
【问题讨论】:
标签: c# .net asp.net sorting gridview
如何在 GridView 中实现双向排序,条件是我的 GridView 不是绑定到 SQL 而是绑定到 datatable-column-row 和数据集。
谢谢!
【问题讨论】:
标签: c# .net asp.net sorting gridview
第一次绑定时,将数据表放入 Viewstate 中。
gridView1.DataBind();
ViewState["dtbl"] = YourDataTable
这是允许您执行此操作的代码...
protected void ComponentGridView_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dataTable = ViewState["dtbl"] as DataTable;
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
dataView.Sort = e.SortExpression + " " + ConvertSortDirection(e.SortDirection);
ComponentGridView.DataSource = dataView;
ComponentGridView.DataBind();
}
}
private string ConvertSortDirection(SortDirection sortDirection)
{
string newSortDirection = String.Empty;
switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;
case SortDirection.Descending:
newSortDirection = "DESC";
break;
}
return newSortDirection;
}
详情请看这篇MSDN文章GridView.Sorting
【讨论】:
在您的数据绑定方法中,您将初始化视图状态,然后在您的排序事件中,您将执行以下操作。
void gvReport_Sorting(object sender, GridViewSortEventArgs e)
{
System.Data.DataTable dataTable = ViewState["dataTable"] as System.Data.DataTable;
string sortDirection = (ViewState["sortDirection"].ToString() == "ASC" ? "DESC" : "ASC");
ViewState["sortDirection"] = sortDirection;
if (dataTable != null)
{
System.Data.DataView dataView = new System.Data.DataView(dataTable);
dataView.Sort = String.Format("{0} {1}", e.SortExpression, sortDirection);
gvReport.DataSource = dataView;
gvReport.DataBind();
}
}
【讨论】: