声讨-------“经典水晶报表设计——单击表头排序表格”这篇文章

flydragon0815 2008-12-17 10:05:16
这篇文章是海波 发表于 @ 2003年12月25日 10:26:00
距今快5年了,当年海波写完,可能他那儿好用,可是他没有说明白,或许是我的水平不够,我没有做成功,5年的时间,迄今没有任何人写关于这方面的东西,承认我是一个菜鸟!!,无论在百度还是谷歌搜索,全是这篇文章,全是这篇文章,全是这篇文章,包括很多门户网站,试问有没有人做成功?!
转之前有没有问问自己:我转了,能不能用上?能不能为需要者提供方便?技术这类的东西,如果是用不上,只是转载来转载去,很没有意思,会误人子弟,何必呢?
在这里对阿泰表示敬仰,很尊重这位高人!
原文地址:http://blog.csdn.net/haibodotnet/archive/2003/12/25/21549.aspx
下面是具体的下文
1. 新建一个字符串类型的参数字段,名称为 URL,用于传递 ASP.NET 程序的网址和网址的部分参数。比如:"http://www.nt.cn/cr.aspx?sort_field="。

2. 右击作为表头的文本字段,选择"设置文本格式",进入"格式化编辑器"对话框。

3. 选择"超级链接"选项卡,并设置超级链接类型为"Internet 上的网址"。

4. 单击超级链接信息的网站地址后面的公式的钮,输入公式 {?URL} + "name"。

5. 这样表头就变成了超级链接,而且指向 http://www.nt.cn/cr.aspx?sort_field=name。

6. ASP.NET 程序在 Page_Load 事件里读取要排序的字段 sort_field,然后对水晶报表进行排序。

7. 水晶报表排序编程实例

Dim crReportDocument As ReportDocument

Public Sub changeSortField(mySortFld As String, mySortDir As String)

Dim crSortField As SortField
Dim crSortDirection As SortDirection
Dim crDatabaseFieldDefinition As DatabaseFieldDefinition

For Each crSortField In crReportDocument.DataDefinition.SortFields
If crSortField.Field.Name.ToString = mySortFld Then
crDatabaseFieldDefinition = crReportDocument.Database.Tables(0).Fields(mySortFld.ToString)
crSortField = crReportDocument.DataDefinition.SortFields(0)
crSortField.Field = crDatabaseFieldDefinition

If mySortDir = "Ascending" Then
crSortField.SortDirection = SortDirection.AscendingOrder
Else
crSortField.SortDirection = SortDirection.DescendingOrder
End If
End If
Next

CrystalReportViewer1.ReportSource = crReportDocument
End Sub

...全文
376 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
showrock 2008-12-26
  • 打赏
  • 举报
回复
收藏
cnjack 2008-12-26
  • 打赏
  • 举报
回复
已經收藏,頂...
阿泰 2008-12-22
  • 打赏
  • 举报
回复
支持~~

建议flydragon0815把文章转到论坛里来。
flydragon0815 2008-12-22
  • 打赏
  • 举报
回复
刚完成,需要就看看吧
flydragon0815 2008-12-22
  • 打赏
  • 举报
回复
今晚有点时间,就整理出来了,希望大家能提出意见和建议
经典水晶报表,单击表头排序:
http://blog.csdn.net/flydragon0815/archive/2008/12/21/3568052.aspx
龅牙鱼 2008-12-22
  • 打赏
  • 举报
回复
期待排序
阿泰 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 flydragon0815 的回复:]
等我有时间整理出来和大家分享
[/Quote]

期待中

分享是进步的阶梯~~
flydragon0815 2008-12-17
  • 打赏
  • 举报
回复
现在报表模板中已经有字段了,比如叫StuId
rpt.DataDefinition.SortFields
crSortField ='StuId'
------------------------
跟踪这个时候,
rpt.DataDefinition.SortFields.Count=0
就是说它里面没有任何字段,所以foreach()就没办法走下去了

-----------------------------------
foreach( SortField crSortField in rpt.DataDefinition.SortFields )
阿泰 2008-12-17
  • 打赏
  • 举报
回复
要使用这段代码,必须先在报表上添加“排序字段”

报表-记录排序专家-增加某个字段

然后才能在代码里调用到这个字段进行排序
flydragon0815 2008-12-17
  • 打赏
  • 举报
回复
多谢阿泰兄

子报表图表位置错误的问题,这个问题,我还是上次做的那样,客户默认了,呵呵,只是显现的位置不对

任意dataset的动态报表生成,这个有点难度,这个可以动态的往dataset中添加,datatable
然后再把datatable应用于报表


单击排序这个,我们正努力的做,ReportDoc.SetDataSource(ds.Tables[0]);给它填充后,
rpt.DataDefinition.SortFields 这个里面总是空的,正在想办法中
//--------------------------
foreach( SortField crSortField in rpt.DataDefinition.SortFields )
{
if(crSortField.Field.Name.ToString()==mySortFld )
{
crDatabaseFieldDefinition=rpt.Database.Tables[0].Fields[mySortFld.ToString()];
//crSortField=rpt.DataDefinition.SortFields[0];
crSortField.Field=crDatabaseFieldDefinition;
}
if(mySortDir=="Ascending")
{
crSortField.SortDirection = CrystalDecisions.Shared.SortDirection.AscendingOrder;//SortDirection.AscendingOrder;
}
else
{
crSortField.SortDirection = CrystalDecisions.Shared.SortDirection.DescendingOrder;//SortDirection.DescendingOrder;// DescendingOrder;
}
}
crystalReportViewer.ReportSource = ReportDoc;
阿泰 2008-12-17
  • 打赏
  • 举报
回复
海波的文章,发布的时候主要集中在VS2003及VS2003自带的水晶报表
与现在的 Vs2005及水晶报表版本有所差异。
我当初也是看着海波的代码走过来的,呵呵。

虽然我没有实际做过,不过这种方法应该是可行的 :)


至少现在,我们有两种方法可以实现点击排序的功能啦,呵呵


PS1:

临近年末了,比较忙,无论是论坛还是博客里的回复速度都慢了,有些惭愧。

实质上咱版里的很多朋友,可能日常使用水晶报表的时间比我多很多,遇到的情况也比我复杂。
比如最近我就遇到了解决不了的问题,
一个是wsg9913028的附加页分页错误,另外就是flydragon0815的子报表图表位置错误的问题。


这个周末准备做下两个教程,一个是这个点击排序的,另外就是一直想做的, 任意dataset的动态报表生成。
正经做个教程不容易,特别是水晶报表这种操作性比较强的工具
写文章也是这样的,呵呵

PS2:
海波哪里去了。。。好像好几年没看到消息了

flydragon0815 2008-12-17
  • 打赏
  • 举报
回复
2000出来的vs,从海波写的可以判断出,是用的vs web
水晶报表的模板应该都是一样的
rockyvan 2008-12-17
  • 打赏
  • 举报
回复
一般寫技術類文章應該註明測試環境,否則就有可能不可以重現作者所述的效果。
flydragon0815 2008-12-17
  • 打赏
  • 举报
回复
等我有时间整理出来和大家分享
flydragon0815 2008-12-17
  • 打赏
  • 举报
回复
阿泰哥,水晶报表单击表头排序已实现,这期间多谢你无私的帮助和指点,呵呵

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧