请教:怎样时数据窗口的一行变为不可编辑?

benshe 2001-12-26 03:11:39
并确保添加下一行,是可以编辑的?
...全文
218 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
benshe 2001-12-28
  • 打赏
  • 举报
回复
不是啦,我的嘴太笨了。。。

因为a列的edit或者dddw属性,是根据其他列动态改变的。此行为dddw,下行为edit时,上一行的a列中的值就显示成id而不是name了。
leaf_cq 2001-12-28
  • 打赏
  • 举报
回复
a列edit的style type为什么要动态改变呢?
Leony 2001-12-27
  • 打赏
  • 举报
回复
小弟我以前是这样做的,增加的时候把每列的protect设成0,确定之后又把它设成1,多麻烦,现在好了,设if(isRowNew(),0,1)就行了,谢谢!谢谢1
poppyboy 2001-12-27
  • 打赏
  • 举报
回复
用这个:dw_1.setitem(row,"id",value)
benshe 2001-12-27
  • 打赏
  • 举报
回复
look
leaf_cq 2001-12-27
  • 打赏
  • 举报
回复
因为你的data column是id,所以你的每条记录的id的值等于a的值,所以你可以直接使用
a的值就可以了
benshe 2001-12-27
  • 打赏
  • 举报
回复
是这样的,a列在数据窗口的dw1,a列设置为dddw,其对应的数据窗口对象,有id和name2列。
(数据窗口对象设计时隐藏id,但让其只显示name.)
此dw1是用来生成查询用的where子句的,即查询时用a列的id.

我也不知道我说明白了没有。
benshe 2001-12-27
  • 打赏
  • 举报
回复
look
leaf_cq 2001-12-27
  • 打赏
  • 举报
回复
既然data column 是id,display column 是name,那么显示当然是name了,至于a列的查询和
a列的edit style为edit是一样的,如(设a列的列名为a,类型为numeric):
sle_1.text = 'a > 200 and a < 1000'
------------------------------------
dw_1.SetFilter( '' )
dw_1.Filter( )
dw_1.SetFilter( sle_1.text )
dw_1.Filter( )
不知道我对你的“用id查询”是否理解正确
benshe 2001-12-27
  • 打赏
  • 举报
回复
data column 是id,
display column 是name
即想显示name,用id查询。
leaf_cq 2001-12-27
  • 打赏
  • 举报
回复
还是你自己的方法管用:)
不知道你dw_1的a列中的数据类型是和id一样呢还是和name一样(也就是你的dddw选定后,你的data column和display column分别是选的哪一列呢?)
azjiao 2001-12-26
  • 打赏
  • 举报
回复
to benshe(小笨蛇) :
谢谢,我也正找答案。可巧,找到了。
benshe 2001-12-26
  • 打赏
  • 举报
回复
还有一个问题:
dw_1中a列为dddw,对应一个数据窗口对象,包括name,id。
显示name,用id查询。
我怎样用settext确保 a列上显示的是name而不是id??
benshe 2001-12-26
  • 打赏
  • 举报
回复
thank you you all.
我在 每列的 protect 里写 "if(getrow()<>rowcount(),1,0)" ,就可以了。
leaf_cq 2001-12-26
  • 打赏
  • 举报
回复
还有什么问题和特殊的要求吗?
benshe 2001-12-26
  • 打赏
  • 举报
回复
uupp
leaf_cq 2001-12-26
  • 打赏
  • 举报
回复
方法根据你的规范用户动作的不同而不同,给个一般例子:
dw_1的需要保护的列的 protect Expressions: if( isRowNew(), 0, 1 )
定义instance变量:
long il_newrow = 0
在“新增”按键中:
if il_newrow > 0 then
if dw_1.GetItemStatus( il_newrow, 0, Primary! ) = New! then // 不允许插入空列,可根据自己不同的要求而定
dw_1.setrow( il_newrow )
dw_1.ScrolltoRow( il_newrow )
dw_1.SetFocus( )
return
else
dw_1.SetItemStatus( il_newrow, 0, Primary!, DataModified! )
end if
end if
il_newrow = dw_1.InsertRow( 0 )
dw_1.ScrollToRow( il_newrow )
dw_1.SetFocus( )
……
return
在“删除”及相类似操作脚本中加入:
long ll_row
……
ll_row = dw_1.GetRow( )
if ll_row = il_newrow then il_newrow = 0 // ★★★
dw_1.DeleteRow( ll_row )
……
return
poppyboy 2001-12-26
  • 打赏
  • 举报
回复
在每个Column中,比如这样:if( isNull(Column),0, 1 )
poppyboy 2001-12-26
  • 打赏
  • 举报
回复
在Expressions中的protect中设定条件
benshe 2001-12-26
  • 打赏
  • 举报
回复
是要添加新一行前,把当前行变为不可编辑的。
加载更多回复(4)

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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