【问题标题】:Sorting a dataset with a dataview使用数据视图对数据集进行排序
【发布时间】:2009-08-31 20:01:33
【问题描述】:

此代码正确获取数据并显示它;但是,排序完全被忽略了。

DataTable dt = f.Execute().Tables[0]; 
dt.DefaultView.Sort = summaryColumn;
rptInner.DataSource = dt.DefaultView;
rptInner.DataBind();

我可以做些什么来强制视图自行排序吗?

(f.Execute() 返回一个数据集,at table 的位置为 0,summaryColumn 是表中的列名,rptInner 是转发器控件)

编辑

summaryColumn 是一个字符串变量,它具有我要排序的列的确切名称。我没有使用 sproc 或任何东西,DataSet 是给我的,我负责对其进行排序。

【问题讨论】:

  • 必须特定于您的场景(Repeater/ASP.NET?)...只是模拟了一个简单的 DataTable 并像您一样分配了 DefaultView.Sort,然后将 dt.DefaultView 设置为 DataSource DataGridView 和它的排序完美。

标签: .net sorting dataset dataview


【解决方案1】:

如果summaryColumn是数据视图中要排序的列的名称,请将其放在双引号中:

DataTable dt = f.Execute().Tables[0]; 
DataView dv = dt.DefaultView;
dv.Sort = "summaryColumn";
rptInner.DataSource = dv;
rptInner.DataBind();

如果它是一个保存列名的字符串变量,请确保它的值是您要排序的列的确切字符串名称...

【讨论】:

  • 我应该更清楚一点,summaryColumn 是一个 String 对象的名称,其中包含我要排序的列的名称。我验证了我正在使用的列的名称与 Columns 集合中的名称相同。甚至情况都是一样的。有什么想法吗?
  • @CharlesBretana: 如果你想用第二列排序(相当于 ORDER BY A, B)怎么办
  • 您是个传奇人物!我一直在寻找方法、功能、系统或用户制作的任何东西来对我的数据进行排序。到目前为止,我一直在通过 SQL 进行操作,发送行名和 asc 或 desc 以执行体面的排序,不再是了!不错的...
  • @Skippy,然后将第二个列名添加到字符串中,以逗号分隔第一个列,如dv.Sort = "summaryColumnA, otherColumnB"; 列默认升序排序。要降序添加字符串descdv.Sort = "summaryColumnA desc, otherColumnB";
【解决方案2】:

我在服务器端进行排序,如果您使用的是执行调用中的存储过程,请在结果集上放置一个 Order By 语句(如果是 SQL)。

【讨论】:

  • 遗憾的是它不是 SQL,我从类库中获取数据集,我无法更改它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多