【问题标题】:cxgrid - set all checkboxes checkedcxgrid - 选中所有复选框
【发布时间】:2013-12-09 15:55:51
【问题描述】:

我正在使用 cxGrid。我的网格中有一个字段(列)是布尔类型(真/假),在网格中表示为复选框。如何在单击按钮时选中(或取消选中)列中的所有复选框?

看起来像这样:

现在我想在单击按钮时选中这 3 个复选框,然后再保存所有内容。 左边的数据(USERS)来自一个表,右边的数据来自一个查询。一切的 SAVE 进入一个单独的 LOG 表。

当我点击“检查所有”按钮时,结果:

我可以运行更新查询:update MYFIELD set SELECTED = '2'; 但我对操纵网格本身更感兴趣。一些简单的事情......

【问题讨论】:

    标签: delphi devexpress delphi-xe4 tcxgrid


    【解决方案1】:

    您必须在表单的某处添加按钮或弹出菜单以接受检查所有“命令”,或者甚至在列标题中放置一个复选框。然后检查您的基础数据集并设置所有字段值。不要忘记 DisableControls/EnableControls。

    【讨论】:

    • 我不想操作底层数据库数据。我希望网格选中/取消选中所有。我知道这是可以做到的。
    • 您的意思是说该列未绑定到底层数据库字段吗?或者它可能是一个计算字段?还是您的 TcxGrid 没有默认的 TcxGridTableView?请用足够的信息更新您的问题。
    • 数据在首次显示时用于输入目的,用户仅选中或取消选中复选框。没有其他的。完成后,他将整个内容保存到数据库中。如果我没记错的话,cxgrid 可以使用脚本设置单元格值。
    • 这本身就是一个有趣的帖子,但答案的作者承认它很丑。也许你最好在你的数据集中添加一个 fkInternalCalc 字段,这样你就可以拥有一个不需要写回数据库的绑定复选框。
    【解决方案2】:

    在我的表中添加了一个额外的字段(布尔类型)并将其在 cxGrid 中的属性更改为复选框的属性。然后单击按钮:

    with uniquery1 do begin
      Active:=False;
      sql.Clear;
      SQL.Add('update users set selected = 0'); //or '1'
      execSql;
    end;
    Uniquery1.Refresh;
    

    我发现这是最简单的方法....

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      相关资源
      最近更新 更多