加入收藏  免费注册  用户登陆  帮助中心
首页 公司新闻 恒佳商城 网站建设 软件下载 用户中心 技术文栏 在线交流 在线商城 精彩视频 推荐站点 精彩贴图
今天是:2020年12月02日 星期三 您现在位于: 首页技术文栏编程开发相关
   【编程经典】自动根据CXGRID排序结果打印数据集
作者:曙光软件  出处:原创  更新时间: 2008年10月21日 
===关于CXGRID排序后打印排序的问题【绝对经典】===
最近在做DELPHI开发时遇到一个问题:
使用cxgrid控件和adoquery控件配合显示查询结果,客户要求可以随便根据调整cxgrid列的排序方式进行排序打印结果,花了1、2个小时,通过查网上资料和自己调试,终于成功。网上查资料的时候发现有不少询问这个问题的编程者,但是很多地方都找不到合适的解决方法,并且有好多地方回复的人都很不负责任地把别的地方搜索到的所谓的解决方法的代码直接复制贴给提问的人,那代码往往根本是错误的,强烈鄙视那些误导人的人们!!
本方法绝对原创,经过我自己调试通过,现将解决方法公布,希望对需要解决这个问题的同行们能有帮助,有什么不好的地方还请多包涵,有疑问可以加我QQ28240420.

方法一:
可以在打印前做如下处理:
var i: integer;
 Sortstr: string;
begin
  sortstr:='';
 for i := 0 to cxGridDBTableView1.SortedItemCount - 1 do
 begin
   Sortstr := SortStr + cxGridDBTableView1.Columns[cxgriddbtableview1.SortedItems

[0].Index].DataBinding.FieldName + iif(cxgriddbtableview1.SortedItems.SortOrder = 

soAscending, ' ASC'' DESC');
   if I < cxgriddbtableview1.SortedItemCount - 1 then   Sortstr := Sortstr + ',';
 end;

adoquery.Sort:=Sortstr;


//上面的方法比较简便,也可以使用下面这个注释掉的方法将排序方式加入到adoquery的sql中。
if Sortstr <>'' then sortstr:=' order by ' + Sortstr;

  querykehu.Close;
  querykehu.SQL.Clear;
  querykehu.SQL.Add(sqlstr + sortstr);
  querykehu.Open;  }

方法二:
也可以在点击CXGRID列修改排序的过程中自动设置adoquery.sort
procedure Tfrm_kehu.cxGridDBTableView1DataControllerSortingChanged(
  Sender: TObject);
var
 i: integer;
 Sortstr: string;
begin

  sortstr:='';
 for i := 0 to cxGridDBTableView1.SortedItemCount - 1 do
   begin
     Sortstr := SortStr + cxGridDBTableView1.Columns[cxgriddbtableview1.SortedItems[0].Index].DataBinding.FieldName + iif(cxgriddbtableview1.SortedItems.SortOrder = soAscending, ' ASC'' DESC');
     if I < cxgriddbtableview1.SortedItemCount - 1 then   Sortstr := Sortstr + ',';
   end;
 TCustomADODataSet(cxGridDBTableView1.DataController.DataSource.DataSet).Sort := Sortstr;
end;

上面这个设置最好,只需要点击CXGRID的,自动设置好了SORT属性,然后打印按原来的代码即可。
注意:代码中的iif是我自己写的一个函数,您可以根据自己的需要去修改这个地方。
 (本文已被浏览 11621 次)
 发布人:james
 → 推荐给我的好友
上篇文章:卡巴斯基误删wininet.dll的解决
下篇文章:绿色SqlServer原理
   文章分类
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 请遵守中华人民共和国各项有关法律,严禁发表违法、反动、以及迷信信息;
  • 不要发布垃圾广告信息!您所发表的信息必须经过我们审核才能显示,所以不要做无用的操作^_^
  • 关于我们网站留言友情链接与我在线管理TOP
    
页面执行时间:<font class=red>46.875</font> 毫秒<font class=gray>(8次)</font><br>
本站当前有 <font class=red>2</font> 人同时在线<br>
最高峰有 <font class=red title=>540</font> 人同时在线<br>
最高峰发生在:2020-3-9 1:48:21<br>
本站总访问量:<font class=red>2234400</font> 人次<br>
本站统计时间:从 <font class=red>2007-01-01</font> 至今<br>
<font class=gray>网站当前版本:CMS1.2</font>
    临沂曙光软件 http://www.softsky.cn/
    联系我们:softsky@163.com
    Copyright (c) 2005-2016 曙光软件 版权所有 鲁ICP备05030889号
    地址:山东临沂华强科技城4楼 电话:0539-2025968 18953979168