以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]动态加载时,窗口中表格显示问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126667) |
||||
-- 作者:一只田鸡 -- 发布时间:2018/10/26 11:10:00 -- [求助]动态加载时,窗口中表格显示问题 如题,设置初始不加载表,打开项目后,点击数据加载窗口的按钮,加载表,加载完成后,有个别业务窗口列名不显示,行里的内容也不显示 但是可以见到行号,可以点选内容。 窗口的afterload事件代码如下:(请老师忙看下有没有不正确的地方) curTable = e.Form.Controls("Table1").Table Dim filter As String \'生成目录树 \'首先生成统计表 Dim dt As DataTable Dim b As New sqlGroupTableBuilder("total","Person") b.C b.Filter = filter b.groups.adddef("PeVillage") b.Groups.AddDef("PeGroup") b.Totals.AddDef("PeName",AggregateEnum.Count,"peoples") \'根据客户列来统计记录数,也就是订单数 dt = b.Build \'参数设置为False,生成一个临时表,不在主界面显示 \'然后根据统计表生成目录树 Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") trv.BuildTree(dt,"PeVillage|PeGroup") trv.StopRedraw For Each nd As WinForm.TreeNode In trv.AllNodes Dim cj As String = nd.DataRow("PeVillage") Dim z As String = nd.DataRow("PeGroup") Select Case nd.Level Case 0 nd.Text = nd.text & "(" & dt.Compute("Sum(peoples)"," PeVillage = \'" & cj & "\'") & "人)" Case 1 nd.Text = nd.text & "(" & dt.Compute("Sum(peoples)"," PeVillage = \'" & cj & "\' And PeGroup = \'" & z & "\'") & "人)" End Select Next trv.Nodes.Insert("全部人员","全部人员(" & dt.Compute("Sum(peoples)") & "人)",0) trv.ResumeRedraw \'不加载数据 curTable.filter = " [_identify] Is null " \'列宽及显示 Functions.Execute("colSetup",curTable) \'锁定表 curTable.AllowEdit = False 2.请教大家,动态加载表时,窗口中表的类型用默认类型就可以了是吗? |
||||
-- 作者:有点蓝 -- 发布时间:2018/10/26 11:17:00 -- 窗口中表的类型数据类型都可以,根据业务处理的需要 应该是列宽设置有问题,所有列都隐藏了
|
||||
-- 作者:一只田鸡 -- 发布时间:2018/10/26 16:07:00 -- 列名消失的问题已经解决了,谢谢蓝老师。 ============================================= 再请教一下各位老师 动态加载表的问题。 一开始,我把判断表是否加载的代码放在窗口的Afterload里,发现打开窗口时,没有内容,要再点一次,才会有内容; 然后我把判断的语句放到菜单按钮上,按一次就可以把表加载进来了。 1.请问,上面的问题是不是就是开发指南—动态加载表—加载单个表中提到的“对于外部表,如果事先没有通过菜单将其添加到项目中,不能使用Load方法加载,”
2.如果在动态加载外部表的时候,加载采用分页加载的方式,可行吗?如果可以,代码要怎么改呢? 菜单按钮click事件代码如下: If DataTables.Contains("表B") = False Then \'如果表B没有加载 DataTables.Load("表B") End If Forms("窗口B").open [此贴子已经被作者于2018/10/26 16:09:11编辑过]
|
||||
-- 作者:一只田鸡 -- 发布时间:2018/10/26 16:38:00 --
|
||||
-- 作者:有点蓝 -- 发布时间:2018/10/26 17:13:00 -- 1、判断表是否加载的代码必须放到窗口打开之前,比如 If DataTables.Contains("表B") = False Then \'如果表B没有加载 DataTables.Load("表B") End If Forms("窗口B").open 2、可以分页加载,参考:http://www.foxtable.com/webhelp/scr/2757.htm BeforeLoadOuterTable事件代码为: If e.DataTableName = "表B" Then 窗口afterload:http://www.foxtable.com/webhelp/scr/1928.htm With DataTables("表B") |