以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 动态fill窗口表加载数据后闪屏问题请教? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=37247) |
||||
-- 作者:zpx_2012 -- 发布时间:2013/7/3 15:38:00 -- 动态fill窗口表加载数据后闪屏问题请教? 项目中的表全部用动态Fill到窗口table中,然后再加载数据。有明细表的加载后还要筛选只显示主表第一行的数据,所以出现闪屏的问题,请教各位大师,如何解决。谢谢!
加载及筛选的代码都在全局表事件afterload和positiongchanged中; 实际项目使用的是sql2005的外部数据源,远程使用加载数据时闪屏更明显。 打开项目后在目录树中点击表A时就会出现。 [此贴子已经被作者于2013-7-3 15:39:42编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/7/3 15:50:00 -- 参考:
http://www.foxtable.com/help/topics/0453.htm
With Tables("订单") .Fill(.......) |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/7/3 16:14:00 --
|
||||
-- 作者:zpx_2012 -- 发布时间:2013/7/3 16:26:00 -- 狐爸,加了那两句代码还是一样,我的情况感觉比较复杂: 第一步是点击目录树节点后打开窗口加载空表进来 Forms(Mtb).Open Tables(Mtb & "_主表").Fill("select *,0 as RowNum from {" & Mtb & "} where [_Identify] < 0","EI",False) If Ctb > "" Then \'如果存在明细表,加载明细表空表 Tables(Mtb & "_明细").Fill("select *,0 as RowNum from {" & Ctb & "} where [_Identify] < 0","EI",False) End If |
||||
-- 作者:zpx_2012 -- 发布时间:2013/7/3 16:29:00 -- 第二步通过调用内部的sqlload函数加载主表的首页数据进来。 Page = 1 Functions.Execute("LoadData") 第三步在afterload事件中加载明细表数据并在明细表中筛选出第一行主表的明细数据。 Tables(Mtb & "_主表").StopRedraw() If DataTables(Mtb & "_主表").DataRows.Count = 0 Then DataTables(Mtb & "_明细").LoadFilter = "[_Identify] < 0 " Else Dim ids As String For Each dr As DataRow In DataTables(Mtb & "_主表").DataRows ids = ids & ",\'" & dr(Rcol) & "\'" Next ids= ids.Trim(",") DataTables(Mtb & "_明细").LoadFilter = Rcol & " In (" & ids & ")" End If DataTables(Mtb & "_明细").Load() |
||||
-- 作者:zpx_2012 -- 发布时间:2013/7/3 16:30:00 -- 第四步 \'只显示第一行主表的明细数据 If DataTables(Mtb & "_明细") IsNot Nothing Then If Tables(Mtb & "_主表").rows.count > 0 Then \'如果主表有数据 Dim flt As String = Rcol & " = \'" & Tables(Mtb & "_主表").Current(Rcol) & "\'" Tables(Mtb & "_明细").Filter = flt End If End If DataTables(Mtb & "_主表").ResumeRedraw() |
||||
-- 作者:zpx_2012 -- 发布时间:2013/7/3 16:34:00 -- 狐爸,我的情况感觉比较复杂: 第一步是点击目录树节点后打开窗口加载空表进来 Forms(Mtb).Open Tables(Mtb & "_主表").Fill("select *,0 as RowNum from {" & Mtb & "} where [_Identify] < 0","EI",False) If Ctb > "" Then \'如果存在明细表,加载明细表空表 Tables(Mtb & "_明细").Fill("select *,0 as RowNum from {" & Ctb & "} where [_Identify] < 0","EI",False) End If 第二步通过调用内部的sqlload函数加载主表的首页数据进来。 Page = 1 Functions.Execute("LoadData") 第三步在afterload事件中加载明细表数据并在明细表中筛选出第一行主表的明细数据。 \'如果主表没数据不加载明细, Tables(Mtb & "_主表").StopRedraw() If DataTables(Mtb & "_主表").DataRows.Count = 0 Then DataTables(Mtb & "_明细").LoadFilter = "[_Identify] < 0 " Else Dim ids As String For Each dr As DataRow In DataTables(Mtb & "_主表").DataRows ids = ids & ",\'" & dr(Rcol) & "\'" Next ids= ids.Trim(",") DataTables(Mtb & "_明细").LoadFilter = Rcol & " In (" & ids & ")" End If DataTables(Mtb & "_明细").Load() \'只显示第一行主表的明细数据 If DataTables(Mtb & "_明细") IsNot Nothing Then If Tables(Mtb & "_主表").rows.count > 0 Then \'如果主表有数据 Dim flt As String = Rcol & " = \'" & Tables(Mtb & "_主表").Current(Rcol) & "\'" Tables(Mtb & "_明细").Filter = flt End If End If DataTables(Mtb & "_主表").ResumeRedraw() 我目前只在第三步用了StopRedraw.但是没有效果,是不是用错地方了? \'只显示第一行主表的明细数据 If DataTables(Mtb & "_明细") IsNot Nothing Then If Tables(Mtb & "_主表").rows.count > 0 Then \'如果主表有数据 Dim flt As String = Rcol & " = \'" & Tables(Mtb & "_主表").Current(Rcol) & "\'" Tables(Mtb & "_明细").Filter = flt End If End If DataTables(Mtb & "_主表").ResumeRedraw() 我目前只在第三步用了StopRedraw.但是没有效果,是不是用错地方了? |
||||
-- 作者:Bin -- 发布时间:2013/7/3 16:38:00 -- 放到最开头 FILL之前 |
||||
-- 作者:zpx_2012 -- 发布时间:2013/7/3 16:58:00 -- 谢谢BIN,入在Fill前好了一点,但还是闪,是不是要按程序段配对才可以啊,能否一个在前一个程序段内,而另一个在另外的程序段? |
||||
-- 作者:Bin -- 发布时间:2013/7/3 16:59:00 -- 一定要配对出现. |