以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 强制刷新问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23313)
|
-- 作者:jiskin
-- 发布时间:2012/9/8 16:50:00
-- 强制刷新问题
以下是一个将临时表内容保存到商品出库的表中的代码
在代码最后我想强制刷新商品出库表中的单价列,
DataTables("商品出库").DataCols("单价").RaiseDataColChanged()
这句代码会刷新所有列,我只需要刷新当前填入数据的那几列就可以了,不知道该如何去改 谢谢!
If DataTables("出库").datarows.count < 1 Then messagebox.show("表中数据为空!") Else Dim dr1 As DataRow Dim dt As DataTable = DataTables("出库") Dim r As Integer r = Tables("商品出库").FindRow("[出库日期] Is null", 0 , False ) \'从当前行开始查找 If r >= 0 Then \'如果找到的话 Tables("商品出库").Position = r \'定位到找到的行. For Each dr As DataRow In dt.datarows dr1 = DataTables("商品出库").DataRows(r) For Each dc As DataCol In dt.datacols dr1(dc.name) = dr(dc.name) Next Next Else For Each dr As DataRow In dt.datarows dr1 = DataTables("商品出库").DataRows.addnew() For Each dc As DataCol In dt.datacols dr1(dc.name) = dr(dc.name) Next Next End If DataTables("商品出库").save() DataTables("出库").DataRows.Clear() \'清除所有行 DataTables("商品出库").DataCols("单价").RaiseDataColChanged() e.Form.Close() End If
|
-- 作者:lin_hailun
-- 发布时间:2012/9/8 16:54:00
--
看看
http://www.foxtable.com/help/topics/1468.htm
|
-- 作者:jiskin
-- 发布时间:2012/9/8 16:56:00
--
看过了…… 就是不知道该如何表示刚写入的那几行~
|
-- 作者:狐狸爸爸
-- 发布时间:2012/9/8 17:04:00
--
你的意思是要填充有数据的列,没有数据的列就不填充?
如果这样:
If DataTables("出库").datarows.count < 1 Then messagebox.show("表中数据为空!") Else Dim dr1 As DataRow Dim dt As DataTable = DataTables("出库") Dim r As Integer r = Tables("商品出库").FindRow("[出库日期] Is null", 0 , False ) \'从当前行开始查找 If r >= 0 Then \'如果找到的话 Tables("商品出库").Position = r \'定位到找到的行. For Each dr As DataRow In dt.datarows dr1 = DataTables("商品出库").DataRows(r) For Each dc As DataCol In dt.datacols If dr.IsNull(dc.name) = False dr1(dc.name) = dr(dc.name) End If Next Next Else For Each dr As DataRow In dt.datarows dr1 = DataTables("商品出库").DataRows.addnew() For Each dc As DataCol In dt.datacols If dr.IsNull(dc.name) = False dr1(dc.name) = dr(dc.name) End If Next Next End If DataTables("商品出库").save() DataTables("出库").DataRows.Clear() \'清除所有行 DataTables("商品出库").DataCols("单价").RaiseDataColChanged() e.Form.Close() End If
|
-- 作者:lin_hailun
-- 发布时间:2012/9/8 17:10:00
--
以下是引用jiskin在2012-9-8 16:56:00的发言:
看过了…… 就是不知道该如何表示刚写入的那几行~
在修改表的地方保存写入的行,最后根据数据循环更新。
[此贴子已经被作者于2012-9-8 17:10:58编辑过]
|
-- 作者:jiskin
-- 发布时间:2012/9/8 19:57:00
--
以下是引用狐狸爸爸在2012-9-8 17:04:00的发言:
你的意思是要填充有数据的列,没有数据的列就不填充?
如果这样:
If DataTables("出库").datarows.count < 1 Then messagebox.show("表中数据为空!") Else Dim dr1 As DataRow Dim dt As DataTable = DataTables("出库") Dim r As Integer r = Tables("商品出库").FindRow("[出库日期] Is null", 0 , False ) \'从当前行开始查找 If r >= 0 Then \'如果找到的话 Tables("商品出库").Position = r \'定位到找到的行. For Each dr As DataRow In dt.datarows dr1 = DataTables("商品出库").DataRows(r) For Each dc As DataCol In dt.datacols If dr.IsNull(dc.name) = False dr1(dc.name) = dr(dc.name) End If Next Next Else For Each dr As DataRow In dt.datarows dr1 = DataTables("商品出库").DataRows.addnew() For Each dc As DataCol In dt.datacols If dr.IsNull(dc.name) = False dr1(dc.name) = dr(dc.name) End If Next Next End If DataTables("商品出库").save() DataTables("出库").DataRows.Clear() \'清除所有行 DataTables("商品出库").DataCols("单价").RaiseDataColChanged() e.Form.Close() End If
狐爸 不是填充有数据列 ,数据是这样的, 录入数据会先存在“入库”的临时表里面(比如某次录入了4条数据),然后按了保存按钮(以上代码就是保存按钮中的代码)会一起保存到“商品入库”的数据表里面,我的需要的就是DataTables("商品出库").DataCols("单价").RaiseDataColChanged() 这条代码仅对这次录入的数据(比如这4条数据)列的“单价”进行强制刷新,而不是整个“商品入库”表都刷新!不然效率肯定低的
[此贴子已经被作者于2012-9-8 19:57:56编辑过]
|
-- 作者:狐狸爸爸
-- 发布时间:2012/9/9 10:23:00
--
搞不懂你说的意思。
而且最好不要这么设计,直接在商品入库表输入即可,输入错误后,可以撤销和删除啊。
再说了,临时表输入数据后,需要转入到正是的数据表,关RaiseDataColChanged什么事?
直接:
http://www.foxtable.com/help/topics/1533.htm
|
-- 作者:布莱克朱
-- 发布时间:2012/9/9 10:44:00
--
楼主 不明白 了 既然已经填充了 不就是已经触动列了吗 为什么还要去刷新呀!
|
-- 作者:jiskin
-- 发布时间:2012/9/9 13:09:00
--
以下是引用布莱克朱在2012-9-9 10:44:00的发言: 楼主 不明白 了 既然已经填充了 不就是已经触动列了吗 为什么还要去刷新呀!
我也不知道为什么,发现上面那段填充的代码 将临时表内容填写到数据表之后 并不触动列,我就只好想到RaiseDataColChanged 这个了……
[此贴子已经被作者于2012-9-9 13:11:38编辑过]
|
-- 作者:狐狸爸爸
-- 发布时间:2012/9/9 15:12:00
--
按道理填充数据就会触发DataColChanged事件,最好仔细i检查一下代码。
如果搞不定,就将就下面的思路来处理吧:
Dim cnt As integer = DataTables("商品入库").DataRows.Count 填充数据到商品入库表 For i as integer = cnt To DataTables("商品入库").DataRows.Count - 1 Dim dr As Datarow = DataTables("商品入库").DataRows(i) DataTables("商品入库").DataCols("单价").RaiseDataColChanged() Next
|