如何在Gridview中保留顺序

时间:2013-04-08 21:08:54

标签: c# asp.net gridview

在我的程序中(asp.net,C#)我使用gridview来显示数据。 它从以下查询中获取数据。

select * from Nametable where NameID in (4,3,1,22,15,8,9,5,7)

但问题是Gridview正在显示数据 以(1,3,4,5,7,8,9,15,22)之类的NameID的升序排序。 我不希望数据被排序,它应该显示 我在查询中提到的方式就像(4,3,1,22,15,8,9,5,7)

一样

这是我的代码

private void loadGridView()
{
    Query = "select * from Nametable where NameID in (4,3,1,22,15,8,9,5,7)"

        DataSet ds = SqlHelper.ExecuteDataset(CommonSettings.Constring, CommandType.Text, Query);
        GridView1.DataSource = ds;
        GridView1.DataBind();
}

3 个答案:

答案 0 :(得分:5)

使用您提供的代码非常困难。它与GridView没有任何关系,它是从SQL返回数据的方式。 SQL根本不会以这种方式为您排序结果。您必须在CASE中指定一个明确的ORDER BY,如下所示:

Query = "select * from Nametable where NameID in (4,3,1,22,15,8,9,5,7) " +
        "order by case NameID when 4 then 0 " +
                             "when 3 then 1 " +
                             "when 1 then 2 " +
                             "when 22 then 3 " +
                             "when 15 then 4 " +
                             "when 8 then 5 " +
                             "when 9 then 6 " +
                             "when 5 then 7 " +
                             "when 7 then 8 end";

显然这很非常麻烦。我强烈建议您尝试按列排序。

答案 1 :(得分:0)

Datagridview的列有一个sort属性。可能已为ID列启用排序。检查datagridview的属性以禁用排序或以编程方式禁用它

答案 2 :(得分:0)

你可以使用列(NameId,SortOrder)创建一个临时表作为查询的一部分,加入它,并通过SortOrder对结果集进行排序 - 这将实现你想要做的 - 但它是有点儿。