http://blog.csdn.net/shuiying/article/details/11374655

uniDBGrid本身是支持checkBox多选的,但必须是Boolean的字段才行,只要是Boolean类型的字段,显示在uniDBgrid中就是带CheckBox的界面。

网上大多数人推荐的方法是在构建查询串的时候,在查询串中添加一个虚拟的Boolean字段来实现多选记录。但一个系统必然有很多的查询串,都要去加个虚拟字段,维护上太麻烦。可以利用TclientDataSet的计算字段来实现多选,而且不需要修改查询串。首先在设计界面添加以下组件

设置Query1的SQLConntcion属性为SQLConnection1。

设置Dsp1的Dataset属性为Query1.

设置Query1的SQL查询串为:select kh_name from khinfo (你可以更改为自己的实际数据查询)

设置CDS1的ProviderName属性为DSP1;

设置DataSource1的Dataset属性为CDS1;

设置uniGrid的Datasource属性为Datasource1.

后面简单的步骤如下:

1.在Delphi设计界面,给ClientDataset添加一个计算字段:CheckBox,如图:

2.在UniDBgrid中添加一个列,列的FieldName属性选择为新建的字段:checkbox,如图:

3.在uniGrid控件的OnCellClick事件中写入以下代码:

  1. if not CDS1.Active then Exit;
  2. if CDS1.RecordCount=0 then Exit;
  3. CDS1.Edit;
  4. CDS1.FieldByName('checkbox').AsBoolean:= not CDS1.FieldByName('checkbox').AsBoolean;
  5. CDS1.Post;

4.获得取被选择的表格,可以有两种方法

(1)可以通过遍历clientDataSet的checkbox字段的值来取得被选择的表格记录行,适用于数据量小的时候。

(2)可以在OnCellClick事件中就用一个StringList类型的变量来记录被选取的数据的记录的主键,进一步处理的时候只需读这个StringList的值就可以,效率要高于遍历clientDataSet,但需要在选中状态改变的时候添加或者移除相应的主键,保持TStringList中记录的主键与界面上选中的记录主键保持同步。

附一张实际运行的图片:

uniDBGrid实行多选表格行的更多相关文章

  1. 在html页,使用ctrl,shift多选表格行

    前段时间,项目中遇到这样一个需求.需要在页面中像windows资源管理器中一样可以使用ctrl和shift键来多选. <html> <head> <style> b ...

  2. jquery完成带复选框的表格行高亮显示

    jquery完成带复选框的表格行高亮显示 通过jquery技术来操作表格是件简单的事,通过jquery的语法,可以很轻松的完成表格的隔行换色,悬浮高亮,在实际的应用中可能会出现表格中带复选框的,删除时 ...

  3. 从头开始一步一步实现EF6+Autofac+MVC5+Bootstarp极简前后台ajax表格展示及分页(二)前端修改、添加表格行点击弹出模态框

    在前一篇中,由于不懂jquery,前端做的太差了,今天做稍做修改,增加一个跳转到指定页面功能,表格行点击样式变化.并且在表格中加入bootstarp的按钮组,按钮点击后弹出模态框,须修改common, ...

  4. jquery完成带单选按钮的表格行高亮显示

    jquery完成带单选按钮的表格行高亮显示 上篇博客写的是复选框的,这次写的是单选框的,有时查询的时候,只能选择一条记录,如果将选中的这条记录的行高亮显示,同时该行的单选按钮也被选中了,这样会提高用户 ...

  5. AppBoxPro - 细粒度通用权限管理框架(可控制表格行内按钮)源码提供下载

    特别声明: 提供的源代码已经包含了 AppBoxPro 的全部源代码,用 VS2012 打开项目后,直接 Ctrl+F5 可以运行起来(默认使用VS自带的LocalDB数据库). FineUIPro是 ...

  6. JQuery EasyUI DataGrid根据条件设置表格行样式(背景色)

    1.javascript定义函数返回样式 <script type="text/javascript"> //根据条件设置表格行背景颜色 function setRow ...

  7. JS组件系列——Bootstrap Table 表格行拖拽

    前言:之前一直在研究DDD相关知识,好久没更新JS系列文章了.这两天做了一个简单的业务需求,觉得效果还可以,今天在这里分享给大家,欢迎拍砖~~ 一.业务需求及实现效果 项目涉及到订单模块,那天突然接到 ...

  8. JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)

    前言:前天刚写了篇JS组件系列——Bootstrap Table 表格行拖拽,今天接到新的需要,需要在之前表格行拖拽的基础上能够同时拖拽选中的多行.博主用了半天时间研究了下,效果是出来了,但是感觉不尽 ...

  9. jquery 动态添加表格行

    jquery 动态添加表格行 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <h ...

随机推荐

  1. 【学习】DataFrame&Series类【pandas】

    参考链接:http://blog.csdn.net/yhb315279058/article/details/50226027 DataFrame类: DataFrame有四个重要的属性: index ...

  2. python中subprocess模块

    subprocess  模块 subprocess称之为子进程,进程是一个正在进行的程序 子进程是由另一个正在运行的程序启动的程序,例如QQ聊天点击一个链接,打开了浏览器,那么浏览器称之为QQ的子进程 ...

  3. React页面插入script

    项目中遇到插入广告的需要,而广告的信息只是一个url链接,这个链接返回的时一个js,和以前插入广告有点不同.所有找了很多方式. 先来展示广告链接返回的信息: 假设广告链接为:http://192.16 ...

  4. vue 未完待续

    1. v-text:主要用来更新textContent,可以等同于JS的text属性. <span v-text="msg"></span> 这两者等价: ...

  5. python入门(五):切片列表元祖字典

    1.切片 针对序列,使用切片可以获得我们想要的内容 序列:字符串.列表.元祖 特点:可以使用坐标获取某一个值.坐标是从0开始算 >>> s="0123456789" ...

  6. FlannBasedMatcher 立体匹配

    #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #i ...

  7. 手工搭建web项目

    https://www.cnblogs.com/skyblue-li/p/5966311.html

  8. hdu 4714 树+DFS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4714 本来想直接求树的直径,再得出答案,后来发现是错的. 思路:任选一个点进行DFS,对于一棵以点u为 ...

  9. 258. Add Digits 入学考试:数位相加

    [抄题]: Given a non-negative integer num, repeatedly add all its digits until the result has only one ...

  10. 199. Binary Tree Right Side View 从右侧看的节点数

    [抄题]: Given a binary tree, imagine yourself standing on the right side of it, return the values of t ...