以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  appendload出来的行默认加入位置如何控制?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=93283)

--  作者:chen3728060
--  发布时间:2016/11/24 15:50:00
--  appendload出来的行默认加入位置如何控制?


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

我的代码也很简单

 

Dim t As Table = Tables("CD1ItemInfo")
Dim dt As DataTable=  DataTables("CD1ItemInfo")

Dim LB As WinForm.ListBox = e.Form.Controls("ListBox_Excel")

If LB.Items.Count > 0 Then
    t.Sort =""   
    dt.LoadFilter="_identify is null"   
    dt.Load(False)
   
    For i As Integer = 0  To LB.Items.Count -1
        Dim getLB As String = LB.Items(i)
        Dim LBs() As String  = getLB.Split(":")\'listbox里每行是 00000103:MR10256,所以要split
        Dim Filter As String ="CD1ItemID = \'" & LBs(0) & "\'"
        If DataTables("CD1ItemInfo").find(Filter) Is Nothing Then
            DataTables("CD1ItemInfo").AppendLoad(Filter,False)           
        End If
    Next
End If

 

我要的就是,加载出来的排序跟我listbox里一样,也就是每次加载的行,都默认在最后一行新增

请问怎么实现?


--  作者:有点蓝
--  发布时间:2016/11/24 16:10:00
--  
默认是按照_Identify或者_sortkey排序的,可以改_sortkey的值,然后按照_sortkey排序,如


t.Sort ="_SortKey" 
For i As Integer = 0  To LB.Items.Count -1
    Dim getLB As String = LB.Items(i)
    Dim LBs() As String  = getLB.Split(":")\'listbox里每行是 00000103:MR10256,所以要split
    Dim Filter As String ="CD1ItemID = \'" & LBs(0) & "\'"
    Dim dr As DataRow = DataTables("CD1ItemInfo").find(Filter)
    
    If dr Is Nothing Then
        dr = DataTables("CD1ItemInfo").AppendLoad(Filter,False)(0)
    End If
    dr("_SortKey") = i
Next

--  作者:chen3728060
--  发布时间:2016/11/24 17:06:00
--  回复:(有点蓝)默认是按照_Identify或者_sortkey排序...

问题解决,厉害~谢谢了


--  作者:chen3728060
--  发布时间:2016/12/2 14:35:00
--  回复:(有点蓝)默认是按照_Identify或者_sortkey排序...

dr("_SortKey") = i ,我后来发现有问题,这个是修改不了sortkey字段的。用这个修改,只是Table界面看到的顺序是对的,但是用excel导出,会发现顺序还是错的。最简单就是用messagebox.show(r("_SortKey")),就会发现并没有赋值成功

 

dr.BaseRow("_SortKey") = i 才行,这样导出的Excel才是Table里看到的完全一致