您的位置:首页 > 编程语言

水晶报表 代码控制记录排序专家

2010-06-02 23:03 246 查看
或许有人会问,记录排序专家直接在



这个界面中控制就好了,可以添加多个排序字段(优先级从上往下递减),为什么还要用代码控制?

没错,完全可以在这个界面中进行控制,但是这样控制完后就定死了,不灵活了~这可不是我们想要的。我们的需求千变万化,可能会按不同字段进行排序,正是基于此,应该由代码来灵活操控这个 排序字段列表

特别提醒,再进行代码控制前,这个记录排序专家的排序字段不能为空,否则下面的

myReport.DataDefinition.SortFields[0].Field 这边会报错!!

private void btnReport_Click(object sender, EventArgs e)
{
CrystalReport1 myReport = new CrystalReport1();

//给报表设置数据源
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..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: