以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]新增行自动累加数值出问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129797)

--  作者:xndd
--  发布时间:2019/1/6 16:39:00
--  [求助]新增行自动累加数值出问题

甜版好!

 

我的目的是这样:新增行的时候,给某些字段累加值,比如orderid字段,用来人工排序,我的代码是放在全局表事件datarowadding中:

 

Dim px As Integer = DataTables("单位表").Compute("max(OrderID)")
e.DataRow("OrderID") = px + 10

 

使用的时候,发现如果是表全部数据都显示就正常,如果通过左侧树筛选后,再添加,就会像图中这样:

 


图片点击可在新窗口打开查看此主题相关图片如下:录制_2019_01_06_16_29_02_750.gif
图片点击可在新窗口打开查看

 

可我用的是datatable和datarow啊,help!


--  作者:有点甜
--  发布时间:2019/1/6 20:06:00
--  

你左边的,不是筛选树,是加载树吧?

 

Dim px As Integer = DataTables("单位表").sqlCompute("max(OrderID)")
e.DataRow("OrderID") = px + 10

e.DataRow.Save


--  作者:xndd
--  发布时间:2019/1/7 10:03:00
--  
 这样也可以,甜版,我修改了代码,在选定节点的事件中:
\'判断选定节点
If e.Node.Level = 0 Then
Dim wtb1 As WinForm.Table = e.Form.Controls("Table1")
wtb1.Table.Filter = " 1 = 1 "
wtb1.Table.Filter = "[单位类型] = " & e.Node.Name
    Dim sltext As String = e.Node.Text
    If (Not sltext.EndsWith(")")) Then
        e.Node.Text = e.Node.Text & "(" & wtb1.Table.Rows.Count & ")"
    End If
End If

这样就可以了,是我对table和datatable理解还是不深刻吧

另外,我很多个窗口都用到类似代码,我想抽象掉它

--  作者:xndd
--  发布时间:2019/1/7 10:17:00
--  
 原先代码是这样判定的:
\'判断选定节点
If e.Node.Level = 0 Then
    Dim wtb1 As WinForm.Table = e.Form.Controls("Table1")
    wtb1.Table.DataTable.LoadFilter = " 1 = 1 "
    wtb1.Table.DataTable.LoadFilter = "[单位类型] = " & e.Node.Name
    wtb1.Table.DataTable.Load
    Dim sltext As String = e.Node.Text
    If (Not sltext.EndsWith(")")) Then
        e.Node.Text = e.Node.Text & "(" & wtb1.Table.Rows.Count & ")"
    End If
End If

--  作者:有点甜
--  发布时间:2019/1/7 10:22:00
--  

是的,设置filter,是筛选;设置loadfilter,是加载。

 

不同的。