• cxgrid对经过筛选过的数据的选择(反选)


    // 下面这个主要是对查询出来的数据, 经过筛选后得到的数据中进行反选操作 ,然后对选择的数据进行修改(全选或选择一部分也可以根据些代码修改)
    Screen.Cursor := crHourGlass;
     cxGrid2DBTableView1.DataController.GotoFirst;
     for i := 0 to cxgrid2DBTableView1.DataController.FilteredRecordCount - 1 do
     begin
       if cxGrid2DBTableView1.DataController.GetItemByFieldName('IsChecked').EditValue  = True then
       begin
         cxGrid2DBTableView1.DataController.GetItemByFieldName('IsChecked').EditValue := False;
       end
       else if cxGrid2DBTableView1.DataController.GetItemByFieldName('IsChecked').EditValue  = False then
       begin
         cxGrid2DBTableView1.DataController.GetItemByFieldName('IsChecked').EditValue  := True;
       end;
     
       cxGrid2DBTableView1.DataController.GotoNext;
     end;
     Screen.Cursor := crDefault;
    //cxgrid2DBTableView1.DataController.FilteredRecordCount这个是得到筛选后的数据行数
    //cxGrid2DBTableView1.DataController.GetItemByFieldName('IsChecked').EditValue这个是得到要修改的字段的值
     
     
    
      选择按钮下有三个选项:全选、反选、全取消
    
         一般是这样的: 先查询,再筛选(查询出来的数据有些不合适时要筛选), 再选择列下打上勾(要是数据多的话一个个打勾也太麻烦了),就可以修改数据的状态,上面的代码就可以对筛选出来的数据进行反选操作。(全选或全取消也是很简单的,参照上面有代码) ,
    
        以前写的代码把经过筛选出来没用的数据也在反选或全选等操作中了 ,这个就没有问题



    using Filter :

    procedure TForm2.Button3Click(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to cxGrid1DBTableView1.DataController.FilteredRecordCount - 1 do
      begin
        cxGrid1DBTableView1.DataController.FocusedRecordIndex := cxGrid1DBTableView1.DataController.FilteredRecordIndex[I];
        cxGrid1DBTableView1.DataController.SetEditValue(cxGrid1DBTableView1Reviewed.Index,
          True, evsValue)
      end;
    end;
    
    
    
    
    
     
  • 相关阅读:
    hdu 1232 最小生成树
    hdu 1260 dp
    hdu 1385 最短路径按字典数输出
    hdu 1541 树状数组
    hdu 1544 求字符串回文
    hdu 1728
    hdu 1754 树状数组求最大值
    hdu 1892 二维树状数组
    hdu 2082 母函数
    循环
  • 原文地址:https://www.cnblogs.com/starluck/p/6233291.html
Copyright © 2020-2023  润新知