急!!!我希望DBGrid实现ListView列表显示时的checkbox功能,我只是希望选种我需要的数据,不希望因此而在表中加个bool字段,请问大侠怎

yingshang 2004-10-29 10:33:53
急!!!我希望DBGrid实现ListView列表显示时的checkbox功能,我只是希望选种我需要的数据,不希望因此而在表中加个bool字段,请问大侠怎么办?

我试过 Ehlib 和 InfoPower ,但他们都是把一个字段用checkbox来改变值,而我不想改变现在的数据表,只想选种我要的记录,真是的,怎么这么难!
...全文
186 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
dh9450 2004-10-29
  • 打赏
  • 举报
回复
在数据集里面加一个计算字段
ssq237712 2004-10-29
  • 打赏
  • 举报
回复
懒得试了,这样肯定可以。
ado控件的话,查询后需要FieldByName('isSelected').ReadOnly := False;否则,改不了的。
ssq237712 2004-10-29
  • 打赏
  • 举报
回复
select *, 0=1 as isSelected from .....
yingshang 2004-10-29
  • 打赏
  • 举报
回复
我用的是mysql

select cast(0 as bit) as isSelected 用不了啊
lzy6204 2004-10-29
  • 打赏
  • 举报
回复
tadvstringgrid能实现你说的功能,tmspack里面的
不过用起来稍微有些繁琐
yingshang 2004-10-29
  • 打赏
  • 举报
回复
我用的是mysql

select cast(0 as bit) as isSelected 用不了啊
ssq237712 2004-10-29
  • 打赏
  • 举报
回复
两种方案:
1、sql语句改一下:select cast(0 as bit) as isSelected, .....
2、用DBGrid的MutiSelect,
potee 2004-10-29
  • 打赏
  • 举报
回复
有个控件叫DataTable可以
cxGrid也可以
yingshang 2004-10-29
  • 打赏
  • 举报
回复
哎,已经1天又三个小时了,看来是解决不了了
yingshang 2004-10-29
  • 打赏
  • 举报
回复
我完全听不懂楼上的意思!????
lwk_hlj 2004-10-29
  • 打赏
  • 举报
回复
其实不用外加字段的啊

检查是否选中,只要检查ListView就可以了!
yingshang 2004-10-29
  • 打赏
  • 举报
回复
楼上说的控件我都试过了,但都是使一个“字段”可以用checkbox的形式显示或改变,我要的是像ListView列表显示时的那种checkbox,一选就是一整条记录,显然,没有符合此要求的控件,看来控件种类并不是我想象中的那么丰富!失望啊~~~~~~
yingshang 2004-10-29
  • 打赏
  • 举报
回复
我用的DAC连接Mysql数据库:mySQLDatabase->mySQLQuery->DataSource->DBGridEh

mySQLQuery.CachedUpdates := True;我设了,ReadOnly := False;我也设了,看来是没办法了,我只好加个字段了,哎,居然没有我要的控件,看来只好增加一个字段了
ksaiy 2004-10-29
  • 打赏
  • 举报
回复
你还可以用第三方控件(dxDBGrid)实现此功能
ksaiy 2004-10-29
  • 打赏
  • 举报
回复
如果不想原表中增加一个字段,可以使用临时表,我就是这样做的

使用adoquery

增加一个varchar(1)字段,初始为空
adoquery.sql := select ' ' as Checked * into #tmptalbe from table1 where ...

select * from #tmptable

点击的时候修改Checked值:
adoquery.edit;
if ((Column.fieldname = Checked) and (adoquery.fieldbyname("checked").asstring = " ")) then
adoquery.fieldbyname("checked").asstring = "Y"
else
if ((Column.fieldname = Checked) and (adoquery.fieldbyname("checked").asstring = "Y")) then
adoquery.fieldbyname("checked").asstring = " "


根据Checked值重画
ssq237712 2004-10-29
  • 打赏
  • 举报
回复
或者你不用这种方式,直接增加一计算字段也可以,我个人不太喜欢那种方法。
ssq237712 2004-10-29
  • 打赏
  • 举报
回复
你用的是bde还是ado?
数据集要设成可写,缓存更新(如果 要提交修改的话,要注意一下isSelected字段)。
BDE的TQuery,设CachedUpdates := True;
ADO,设LockType := ltBatchOptimistic;
yingshang 2004-10-29
  • 打赏
  • 举报
回复
不知道是不是我太苯了,流亡帅哥的方法怎么试都不能改checkbox的值,ReadOnly := False;我都做了,怎么会事啊!

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧