Gridview的动态排序
本文关键字:排序 动态 Gridview | 更新日期: 2023-09-27 18:09:25
我正在进行数据网格排序。但GridViewStudents。数据源在排序函数中返回null。我尝试使用session &视图状态。但是行不通。
感谢您的帮助。
My asp code for datagrid:
<asp:GridView ID="GridViewStudents" runat="server" AllowSorting="True"
onsorting="GridViewStudents_Sorting" ></asp:GridView>
排序功能:
protected void GridViewStudents_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dataTable = GridViewStudents.DataSource as DataTable;
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
GridViewStudents.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
GridViewStudents.DataSource = dataView;
GridViewStudents.DataBind();
}
}
排序辅助函数:
private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
string newSortDirection = String.Empty;
switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;
case SortDirection.Descending:
newSortDirection = "DESC";
break;
}
return newSortDirection;
}
应用自动排序模式
dataGridView1.Columns["ColName"].SortMode = DataGridViewColumnSortMode.Automatic;
试试这个…
DataGridView控件使用SortMode属性值为Automatic
的列进行排序,排序符号将自动显示在列标题中。
确保在每次往返时重新绑定Gridview。gridview的数据源不会自动存储在gridview或viewstate中。如果需要访问数据源,则需要首先传播数据源。
我找到了解决方案。希望对大家有所帮助。
对于任何遇到DataGridView排序问题的人。记住4个步骤
-
声明全局数据集对象
static DataSet ds = null;
-
将数据加载到网格
if (!IsPostBack) { loadData(); }
-
写排序函数
protected void GridViewStudents_Sorting(object sender, GridViewSortEventArgs e) { DataTable dataTable = new DataTable(); dataTable = ds.Tables[0]; if (dataTable != null) { DataView dataView = new DataView(dataTable); dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection); GridViewStudents.DataSource = dataView; GridViewStudents.DataBind(); } }
-
排序辅助函数
private string ConvertSortDirectionToSql(SortDirection sortDirection) { string newSortDirection = String.Empty; switch (sortDirection) { case SortDirection.Ascending: newSortDirection = "ASC"; break; case SortDirection.Descending: newSortDirection = "DESC"; break; } return newSortDirection; }