1

私のプログラム (asp.net、C#) では、グリッドビューを使用してデータを表示しています。次のクエリからデータを取得します。

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 は、結果をそのように並べ替えません。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";

明らかに、これは非常に面倒です。代わりに、列でソートすることを強くお勧めします。

于 2013-04-08T21:18:03.610 に答える
0

Datagridview には、列の並べ替えプロパティがあります。ID列のソートが有効になっている可能性があります。データグリッドビューのプロパティをチェックして、並べ替えを無効にするか、プログラムで無効にします

于 2013-04-08T21:18:22.970 に答える