【问题标题】:DataTable.DefaultView.Sort doesn't seem to be workingDataTable.DefaultView.Sort 似乎不起作用
【发布时间】:2011-01-18 22:08:53
【问题描述】:

我填充了一个 DataTable,然后对该 DataTable 的 DefaultView 进行排序。当我将 DataTable 设置为报告的源时,排序不起作用。如果有帮助,这里是代码(GetData 返回一个有效的 DataTable):

    Dim dt As DataTable = a.GetData(Parm1, Parm2, Parm3)

    If rbtSortByField1.Checked Then
        dt.DefaultView.Sort = "Field1 ASC"
    ElseIf rbtSortByField2.Checked Then
        dt.DefaultView.Sort = "Field2 ASC"
    ElseIf rbtSortByField3.Checked Then
        dt.DefaultView.Sort = "Field3 ASC"
    End If

    rpt.SetDataSource(dt.DefaultView.Table)
    'This also doesn't work
    'rpt.SetDataSource(dt)

【问题讨论】:

  • 我打赌它是 CrystalDecisions.CrystalReports.Engine.ReportDocument

标签: asp.net datatable sorting dataview


【解决方案1】:

假设这是一个水晶报表...

请参阅这篇文章。您无法对数据源进行排序,您需要让报表进行排序。

http://it.toolbox.com/blogs/coding-dotnet/sorting-the-fields-in-crystal-report-programmatically-16201

这里也有介绍:

http://msdn.microsoft.com/en-us/library/ms225717.aspx

【讨论】:

  • 是的,它是水晶报表。我更改了代码,但不确定这一行: FieldDef = objReport.Database.Tables("sp_LoadData").Fields("Field1") 我得到一个非特定的“系统错误”,没有引用行号。 sp_LoadData 是我的存储过程。 objReport.Database.Tables(0).Fields("Field1") 给出“未设置对象引用”错误。我觉得我越来越近了,但还没有完全到那里。
【解决方案2】:

您需要将数据视图传递给 Crystal 而不是像中的数据表

datatable.DefaultView.Sort = "col1, col2, col3"
Dim dv As DataView = datatable.DefaultView 

myReportDocument.SetDataSource(dv)

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 2016-02-01
    • 2020-09-23
    • 2010-12-05
    • 2011-06-14
    • 2015-01-10
    • 2016-02-24
    • 2018-06-20
    • 2011-12-27
    相关资源
    最近更新 更多