以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 切换表时特别卡 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101454) |
-- 作者:jick0526 -- 发布时间:2017/5/31 18:59:00 -- 切换表时特别卡 老师,请问下为什么我切换表时特别卡,等很久才切换过来,软件里大概有30个表 |
-- 作者:有点色 -- 发布时间:2017/5/31 21:41:00 -- 你是不是在prepareEdit或者drawcell事件或者项目事件maintableChanged写了什么耗时的代码? |
-- 作者:jick0526 -- 发布时间:2017/6/1 18:59:00 -- 老师,我试了下是maintableChanged放太多东西了,我想问下,我想在切换表时,自动重置当前表的所有列,代码该怎么写,谢谢! |
-- 作者:有点色 -- 发布时间:2017/6/1 20:49:00 -- 有必要在切换的时候,就重置吗?为什么要重置?你datacolchanged事件写了什么代码? |
-- 作者:jick0526 -- 发布时间:2017/6/1 21:45:00 -- 其他表还有类似这样的代码,每次重置才能刷新,很麻烦,所以才想到用切换表就自动重置 Select Case e.DataCol.Name Case "第一列","第二列","第三列" Dim dr As DataRow = e.DataRow Dim pr As DataRow If dr.IsNull("第一列") OrElse dr.IsNull("第二列") OrElse dr.IsNull("第三列") Then dr("第四列") = Nothing Else Dim filter As String filter = "第一列 = \'" & dr("第一列") & "\' And 第二列 = \'" & dr("第二列") & "\' And 第三列 = \'" & dr("第三列") & "\'" pr = DataTables("Mps_Future").Find(filter) If pr IsNot Nothing Then e.DataRow("第四列") = "已上传" Else e.DataRow("第四列") = "未上传" End If End If End Select Select Case e.DataCol.Name Case "第一列","第二列","第三列" Dim dr As DataRow = e.DataRow Dim pr As DataRow If dr.IsNull("第一列") OrElse dr.IsNull("第二列") OrElse dr.IsNull("第三列") Then Else Dim filter As String filter = "第一列 = \'" & dr("第一列") & "\' And 第二列 = \'" & dr("第二列") & "\' And 第三列 = \'" & dr("第三列") & "\'" pr = DataTables("Mps_Future").Find(filter) If pr IsNot Nothing Then pr("第四列") = "已上传" End If End If End Select If e.DataCol.Name = "第三列新" AndAlso e.NewValue > 0 Then e.DataRow("第三列") = e.DataRow("第三列新") End If If e.DataCol.name = "第五列" Then If e.NewValue.length = 8 Then Dim d As Date = new Date(e.NewValue.Substring(0,4), e.newvalue.substring(4,2), e.newvalue.substring(6,2)) e.DataRow("第五列")= d End If End If Select Case e.DataCol.Name Case "北京" If e.DataRow.IsNull("北京") = False Then Dim nma() As String = {"1","2","3","4","5","6","7","8","9","10","11","12"} \' Dim nmb() As String = {"1","2","3","4","5","6","7","8","9","10","11","12"} \' Dim dr As DataRow = DataTables("7").AddNew() For i As Integer = 0 To nma.Length - 1 dr(nmb(i)) = e.DataRow(nma(i)) Next End If End Select
|
-- 作者:jick0526 -- 发布时间:2017/6/1 21:47:00 -- 老师,如果切换表时,只自动重置当前的表应该不会卡吧,又不是切换表时所有表的列都重置了 |
-- 作者:有点色 -- 发布时间:2017/6/1 22:05:00 -- 那你就判断表名,然后重置列,如
If mainTable.Name = "表A" Then
ElseIf mainTable.Name = "表B" Then
End If |
-- 作者:jick0526 -- 发布时间:2017/6/1 22:18:00 -- 老师,这样的代码能帮我写一下吗?如果打开的是表A,那么自动重置表A的A列,B列,C列 |
-- 作者:有点色 -- 发布时间:2017/6/1 23:10:00 -- If MainTable.Name = "表A" Then MainTable.DataTable.DataCols("A列").RaiseDataColChanged MainTable.DataTable.DataCols("B列").RaiseDataColChanged MainTable.DataTable.DataCols("C列").RaiseDataColChanged ElseIf MainTable.Name = "表B" Then End If |