📅  最后修改于: 2023-12-03 15:30:04.378000             🧑  作者: Mango
GridView 是一个常见的 ASP.NET Web Forms 控件,用于显示数据。该控件允许用户对数据进行排序,使得浏览数据更加方便。在本文中,我们将介绍如何在 C# 中对 GridView 进行数据排序。
在 GridView 上添加排序按钮,用于触发排序事件。代码如下:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField HeaderText="ID" DataField="ID" SortExpression="ID" />
<asp:BoundField HeaderText="Name" DataField="Name" SortExpression="Name" />
<asp:BoundField HeaderText="Age" DataField="Age" SortExpression="Age" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnSort" runat="server" Text="Sort" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
以上代码将生成一个包含三个绑定字段和一个排序按钮的 GridView。
使用以下代码,为 GridView 的排序按钮注册事件:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("Sort"))
{
// 获取点击的按钮所在的行
GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
// 获取要排序的列名称
string sortExpression = GridView1.Columns[row.Cells.GetCellIndex((TableCell)((Button)e.CommandSource).Parent)].SortExpression;
// 获取排序方式
SortDirection sortDirection;
if (ViewState["sortDirection"] == null)
{
sortDirection = SortDirection.Ascending;
ViewState["sortDirection"] = sortDirection;
}
else
{
sortDirection = (SortDirection)ViewState["sortDirection"];
sortDirection = sortDirection == SortDirection.Ascending ? SortDirection.Descending : SortDirection.Ascending;
ViewState["sortDirection"] = sortDirection;
}
// 根据字段名称和排序方式对数据进行排序
DataTable dt = GetData();
DataView dv = new DataView(dt);
dv.Sort = sortExpression + (sortDirection == SortDirection.Ascending ? " ASC" : " DESC");
// 将排序后的数据重新绑定到 GridView 上
GridView1.DataSource = dv;
GridView1.DataBind();
}
}
该方法首先获取用户点击的按钮所在的行,然后从该行中获取字段名称。接下来,获取排序方式并对数据进行排序,最后将排序后的数据重新绑定到 GridView 上。
最后,我们需要定义一个方法,用于获取 GridView 的数据源。在本文中,我们使用以下代码获取一组示例数据:
private DataTable GetData()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));
dt.Rows.Add(1, "张三", 25);
dt.Rows.Add(2, "李四", 30);
dt.Rows.Add(3, "王五", 20);
dt.Rows.Add(4, "赵六", 28);
dt.Rows.Add(5, "陈七", 22);
return dt;
}
本文介绍了如何在 C# 中对 GridView 进行排序。使用以上代码,您可以为 GridView 添加排序按钮,并允许用户对数据进行排序。