cxGrid【过滤、排序】后获取选中记录的值和cxGrid空表判断
方法一:
使用函数GetRowValue
此方法在表格过滤、排序后也正常,
请注意:此代码顺序需要CXGRID的列顺序和ADOQUERY中SELECT的字段顺序一致,否则会取错。
procedure TfrmBillExtraction.pmGetBill_D_DatasClick(Sender: TObject); var I,J : Integer; begin with cxGDBTV_Bill_M.DataController,cxGDBTV_Bill_M.DataController.DataSet do begin for I := 0 to GetSelectedCount-1 do begin J := GetSelectedRowIndex(I); //取选中行,列名为sMergeNO的值 ShowMessage(Trim(GetRowValue(GetRowInfo(J),FieldByName('sMergeNo').Index))); end; end; end;
方法二:
使用函数:GetValue
此方法开了过滤、排序后不正常,请大家注意。
1 procedure TfrmBillExtraction.pmGetBill_D_DatasClick(Sender: TObject); 2 var 3 I,J : Integer; 4 begin 5 with cxGDBTV_Bill_M.DataController,cxGDBTV_Bill_M.DataController.DataSet do 6 begin 7 for I := 0 to GetSelectedCount-1 do 8 begin 9 J := GetSelectedRowIndex(I); 10 //取选中行,列名为sMergeNO的值 11 ShowMessage(Trim(GetValue(J,FieldByName('sMergeNo').Index))); 12 end; 13 end; 14 end;
方法三:〖推荐〗
直接取表格的显示值,这个应该算是比较好的。经测试,拖动、分组、过滤等操作都不会影响取值。
1 for i:= 0 to AView.Controller.SelectedRowCount-1 do begin 2 showmessage(AView.DataController.GetDisplayText(AView.Controller.SelectedRows[i].RecordIndex,AView.DataController.GetItemByFieldName('sMergeNo').Index)); 3 end;
判断cxGrid是否为空表
1 if cxGridDBTableView.ViewData.IsEmpty then 2 begin 3 Exit; 4 end;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2023-11-14 QDAC使用记录-QLog
2023-11-14 创建自己的https证书(转)