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;

 

posted @ 2024-11-14 17:26  Thenext  阅读(6)  评论(0编辑  收藏  举报