如何对gridview进行排序以按特定列显示该行

时间:2012-03-13 12:53:15

标签: c# asp.net sql

我已经尝试了很多次来找到一种方法来对gridview进行排序,但我找不到办法来做到这一点。

表格列:

Name | Age | Old device name
============================
John | 22  | KRT 20
Jon  | 21  | KSR 12
Jco  | 22  |

我想知道如何制作一个删除列表,在gridview中选择按旧设备名称排序所有行,所以我应该在gridview中只看到包含旧设备名称的行。

我在ASP.NET中使用SqlDataSource和GridView。

1 个答案:

答案 0 :(得分:2)

编辑:我已根据您的评论更新了代码。

执行此操作的一种方法是将DropDownList设置为AutoPostBack="true",并处理SelectedIndexChanged事件。在此示例中,DropDownList中的项应与GridView的列名匹配。我使用过“ColumnA”,“ColumnB”和“ColumnC”

<asp:DropDownList ID="DropDownList1" AutoPostBack="true" runat="server"
    OnSelectedIndexChanged="myDDL_SelectedIndexChanged">
    <asp:ListItem>ColumnA</asp:ListItem>
    <asp:ListItem>ColumnB</asp:ListItem>
    <asp:ListItem>ColumnC</asp:ListItem>
</asp:DropDownList>

然后,在后面的代码中,您可以设置GridView的“SortExpression”并数据绑定根据您的下拉选择值调用sort函数:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    gridView1.Sort(DropDownList1.SelectedValue, SortDirection.Ascending);
}

您可以将SortDirection.Ascending替换为SortDirection.Descending

注意:此答案假定下拉列表中的值是数据源中列/字段的名称。