Foxtable(狐表)用户栏目专家坐堂 → [求助]操作记录


  共有6304人关注过本帖树形打印复制链接

主题:[求助]操作记录

帅哥哟,离线,有人找我吗?
ztmdnzc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:501 积分:4167 威望:0 精华:0 注册:2013/1/18 13:34:00
  发帖心情 Post By:2014/1/12 14:40:00 [显示全部帖子]

以下是引用狐狸爸爸在2013-4-7 12:46:00的发言:

可能是这个原因:

http://www.foxtable.com/help/topics/2436.htm

 

数据绑定与值的读写

如果一个控件已经绑定到了某列,就不应该直接设置该控件的值,而是直接设置其绑定列的值。

假定有一个日期输入框(DateTimePicker),绑定到了订单表的日期列,我们将某个按钮的代码设置为:

Dim dtp As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
dtp.Value =
Date.Today
MessageBox.Show(
"输入框的值:" & dtp.Value)
MessageBox.Show(
"日期列的值:" & Tables("订单").Current("日期"))

单击这个按钮,你会发现日期输入框的值,确实等于今天的日期,但是订单表日期列的值,并不是今天,而是原来的值。
也就是说,在绑定状态下,设置控件的值,并不会同步更新其绑定列的值。

在绑定状态下,我们应该直接设置列的值,而不是控件的值。
例如我们将按钮的代码改为:

Tables("订单").Current("日期") = Date.Today()
MessageBox.Show(
"输入框的值:" & e.Form.Controls("DateTimePicker1").Value)
MessageBox
.Show("日期列的值:" & Tables("订单").Current("日期"
))

现在单击这个按钮,可以发现日期输入框的值和订单表的日期列,都等于今天的日期。

实际上,在绑定状态下,不管是写值还是取值,都应该通过列进行,而不是通过控件进行。

例如假定窗口有个TextBox控件,绑定到表A的第一列,在窗口的AfterLoad设置如下代码:

Dim txt1 As WinForm.TextBox = e.Form.Controls("TextBox1")
MessageBox.Show(txt1.Value)

然后打开窗口,可以发现显示的是一个空值,而不是第一列真正的值,因为窗口刚刚打开的时候,控件还没有来得及从表中取值。

在绑定状态下取值,一样应该直接读取列的值,而不是读取控件的值,所以正确的代码是:

Dim txt1 As WinForm.TextBox = e.Form.Controls("TextBox1")
MessageBox.Show(Tables("表A").Current("第一列"))

 

?????为什么会出现这种怪事?

[此贴子已经被作者于2014-1-12 14:42:08编辑过]

 回到顶部