当前位置:  开发笔记 > 编程语言 > 正文

如何在执行DataBind之前对DataSet进行排序?

如何解决《如何在执行DataBind之前对DataSet进行排序?》经验,为你挑选了1个好方法。

我以数据的形式来自数据库DataSet.然后我DataSource在做之前将其设置为网格控件DataBind().我想排序DataSet/ DataTable上一列.该列是复杂的,以在数据库中排序,但我希望我可以排序,就像我将排序通用列表,即使用deligate.

这是可能的还是我必须将其转移到不同的数据结构?

编辑我无法得到任何这些答案为我工作,我想因为我使用.Net 2.0.



1> Marc Gravell..:

由于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进行排序 - 有点啰嗦,但是:

        List sorted = 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)

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有