以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  重新排序触发current change,貌似对新建行与已存在的行,影响不一样  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=89309)

--  作者:chen3728060
--  发布时间:2016/8/18 21:55:00
--  重新排序触发current change,貌似对新建行与已存在的行,影响不一样

我有个客户档案的表,里面有两列,一列是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


--  作者:大红袍
--  发布时间:2016/8/18 23:02:00
--  

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

 

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


--  作者:chen3728060
--  发布时间:2016/11/17 17:15:00
--  回复:(大红袍) 对于副本表,是实时排序的,你...

突然想追问一个问题

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

①正本表Table.addnew

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

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


--  作者:有点蓝
--  发布时间:2016/11/17 18:08:00
--  
可以这样。我更喜欢编辑窗口绑定SqlTable,SqlTable来addnew,保存后再追加到主表。