或许有人会问,记录排序专家直接在
这个界面中控制就好了,可以添加多个排序字段(优先级从上往下递减),为什么还要用代码控制?
没错,完全可以在这个界面中进行控制,但是这样控制完后就定死了,不灵活了~这可不是我们想要的。我们的需求千变万化,可能会按不同字段进行排序,正是基于此,应该由代码来灵活操控这个 排序字段列表
特别提醒,再进行代码控制前,这个记录排序专家的排序字段不能为空,否则下面的
myReport.DataDefinition.SortFields[0].Field 这边会报错!!
//给报表设置数据源
myReport.SetDataSource(ds);
/* 报表引用的数据表来自于数据集的DataTable1,把TextType字段提取出来
* 这里也可使用模板中未用到的字段,但按字段排序一般还是对模板有用到的字段进行排序 */
FieldDefinition FieldDef = myReport.Database.Tables["DataTable1"].Fields["TextType"];
//更改记录排序专家中 排序字段列表
myReport.DataDefinition.SortFields[0].Field = FieldDef;
//设置排序值,有四个可选项(如下图示),这里设为降序排序
myReport.DataDefinition.SortFields[0].SortDirection = SortDirection.DescendingOrder;
/*还可以利用公式字段进行排序(即使模板中没使用到),这个就有其实用价值了,比如一个
* 字段是字符型,由于数字字符排序和数字排序是不一样的,要是对一个数字字符型的数据
* 字段进行排序,就必须先把它转换成数字再进行排序,这步转换工作交给公式处理无疑是
* 一个不错的选择。好比我这边的TextType字段是一个数字字符型
* 先用公式x1【ToNumber({DataTable1.TextType})】把它转换为数字型 */
FieldDef = myReport.DataDefinition.FormulaFields["x1"];
//更改记录排序专家中 排序字段列表
myReport.DataDefinition.SortFields[0].Field = FieldDef;
//设置排序值,这里设 按公式字段x1降序排序
myReport.DataDefinition.SortFields[0].SortDirection = SortDirection.DescendingOrder;
crystalReportViewer1.ReportSource = myReport;
}
本文的发表还得感谢http://blog.csdn.net/flydragon0815/archive/2008/12/21/3568052.aspx
thx..