我以数据的形式来自数据库DataSet
.然后我DataSource
在做之前将其设置为网格控件DataBind()
.我想排序DataSet
/ DataTable
上一列.该列是复杂的,以在数据库中排序,但我希望我可以排序,就像我将排序通用列表,即使用deligate.
这是可能的还是我必须将其转移到不同的数据结构?
编辑我无法得到任何这些答案为我工作,我想因为我使用.Net 2.0.
由于DataTable(和DataView)排序的工作原理,您无法直接使用委托方法.一种解决方法是向表示顺序的数据表添加一列,并根据所需的顺序设置值(每行).然后,您可以在此新列的视图中添加排序.例如(使用LINQ进行排序,只是为了简洁):
var sorted = table.Rows.Cast().OrderBy(row => your code); int sequence = 0; foreach(var row in sorted) { row["sequence"] = sequence++; }
(如果你有一个类型化的数据集,那么我认为你不需要Cast步骤,或者你会使用你输入的DataRow子类)
[编辑包括2.0]
在2.0(即没有LINQ等)你可以使用a List
进行排序 - 有点啰嗦,但是:
Listsorted = new List (); foreach(DataRow row in table.Rows) { sorted.Add(row); } sorted.Sort(delegate(DataRow x, DataRow y) { your code }); int sequence = 0; foreach(DataRow row in sorted) { row["sequence"] = sequence++; }
(再次,如果您使用的是类型化数据集,请替换DataRow)