你在"泥料配比_1"的CurrentChanged事件设置同样的代码。
但是需要判断一下是否存在当前行:
e.Table.StopRedraw
Dim lst1 As New List (of String)
Dim lst2 As New List (of String)
Dim r As Row = e.Table.Current
if r Is nothing Then
Return
End if
Dim idx As Integer = e.Table.colsel
For Each c As col In e.Table.cols
Select Case c.name
Case "日期","计划号","材质","粒度备注"
Case Else
If r.IsNull(c.name) Then
lst2.add(c.name)
Else
lst1.add(c.name)
End If
End Select
Next
lst1.sort
lst2.sort
Dim p As Integer = 4
For i As Integer = 0 To lst1.count -1
e.Table.Cols(lst1(i)).Move(p)
p = p + 1
Next
For i As Integer = 0 To lst2.count -1
e.Table.Cols(lst2(i)).Move(p)
p = p + 1
Next
e.Table.Select(e.Table.Rowsel,idx)
e.Table.ResumeRedraw