在我的程序中(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();
}
答案 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对结果集进行排序 - 这将实现你想要做的 - 但它是有点儿。