Foxtable(狐表)用户栏目专家坐堂 → 重新排序触发current change,貌似对新建行与已存在的行,影响不一样


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

主题:重新排序触发current change,貌似对新建行与已存在的行,影响不一样

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


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
重新排序触发current change,貌似对新建行与已存在的行,影响不一样  发帖心情 Post By:2016/8/18 21:55:00 [只看该作者]

我有个客户档案的表,里面有两列,一列是ID,一列是客户名

 

我新建了一个 模式 的编辑窗口,就是对着这个正表,绑定的textbox之类的控件全部都是这个正表的,大概如下图,很容易理解

 
此主题相关图片如下:1.jpg
按此在新窗口浏览图片

 

 

然后我有一个窗体,里面是客户档案的副本表,由于要显示客户的照片,所以 current change事件设置了 会找客户档案正表里对应的行

If e.Table.Current IsNot Nothing Then
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim wz As Integer = Tables("YBCustomerInfo").FindRow(dr)
    If wz >=0 Then
        Tables("YBCustomerInfo").Position = wz
    End If
End If

 

客户档案的副本表是全加载(无动态加载),按照客户名进行排序。

 

如果我对某一行进行编辑,编辑按钮代码如下

Forms("YBCustomerEdit").show

 

 
此主题相关图片如下:1.jpg
按此在新窗口浏览图片

 

编辑的过程中,修改商品名称,会触发副本表的sort重新排序,然后重新排序,也会触发current change,虽然行的位置变化了,但是我编辑窗口里,仍然是刚才的行,很正常没问题


此主题相关图片如下:2.jpg
按此在新窗口浏览图片

 

但是~!

 

如果我是使用新建,新建按钮代码如下:

Dim r As Row = Tables("YBCustomerInfo").AddNew
Forms("YBCustomerEdit").show

 

新建的过程中,修改商品名称,触发副本表的sort重新排序,也出发current change,行的位置变化了,但同时我编辑窗口里的行也发生变化了!不是我正在新建的行了

  
此主题相关图片如下:3.jpg
按此在新窗口浏览图片

 

 

这搞到我没办法新建啊,于是我把新建按钮的代码改为:

Dim t As Table =Tables("YBCustomerSelect_TableYBCustomerInfo")
Dim sort As String = t.Sort
t.Sort=""

 

Dim r As Row = Tables("YBCustomerInfo").AddNew
Forms("YBCustomerEdit").show


t.Sort= sort

 

这样新建就没问题了。

 

最终我想问的问题:

为什么这个sort排序,在新建的时候会有影响,而在编辑的时候又不会有影响?同样是对整个表的行进行了重新的排序,都触发过current change


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/18 23:02:00 [只看该作者]

 对于副本表,是实时排序的,你新建行以后,马上就排序了,可能会导致错乱。

 

 如果是修改数据的话,我觉得,用sqlTable也要比用副本要好。


 回到顶部
帅哥哟,离线,有人找我吗?
chen3728060
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(大红袍) 对于副本表,是实时排序的,你...  发帖心情 Post By:2016/11/17 17:15:00 [只看该作者]

突然想追问一个问题

sqltable新建商品,流程是不是这样

①正本表Table.addnew

②弹出一个模式的录入窗口,对应该Table的

③录入保存后,SqlTable用appendload追加刚才新建的行?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/17 18:08:00 [只看该作者]

可以这样。我更喜欢编辑窗口绑定SqlTable,SqlTable来addnew,保存后再追加到主表。

 回到顶部