1

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

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

但问题是 Gridview 以 NameID 的升序显示数据,例如(1,3,4,5,7,8,9,15,22). 我不想对数据进行排序,它应该完全按照我在查询中提到的方式显示(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();
}
4

3 回答 3

5

使用您提供的代码很难做到这一点。它与您的 没有任何关系GridView,它是从 SQL 返回数据的方式。SQL 根本不会以这种方式为您排序结果。您必须像这样指定一个显CASEORDER 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";

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

于 2013-04-08T21:18:03.610 回答
0

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

于 2013-04-08T21:18:22.970 回答
0

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

于 2013-04-08T21:32:09.280 回答