以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口刷新代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81524)

--  作者:scstrty666
--  发布时间:2016/2/29 16:37:00
--  窗口刷新代码

老师,我设计的单据套打基本完成,但还有个问题,就是在窗口中按日期筛选后,窗口数据不会刷新,要重启窗口数据才会刷新,要怎样写代码,才能在筛选日期后自动刷新窗口中的数据?请老师指教!


--  作者:大红袍
--  发布时间:2016/2/29 16:39:00
--  
 不明白你指什么,具体例子说明。
--  作者:scstrty666
--  发布时间:2016/2/29 16:46:00
--  
就是设计了一个窗口,其中有一个控件用于按日期筛选表各行,表中数据改变了,但窗口中的数据不能及时刷新。
--  作者:scstrty666
--  发布时间:2016/2/29 16:56:00
--  


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

如图,选择日期后,窗口中的数据不会刷新。


--  作者:大红袍
--  发布时间:2016/2/29 17:09:00
--  
把afterload事件的代码放到筛选代码的后面即可。
--  作者:scstrty666
--  发布时间:2016/2/29 17:24:00
--  

是这样的,但不行。

Dim cmb As WinForm.ComboBox = e.form.Controls("筛选日期")
cmb.ComboList = DataTables("小委托").GetComboListString("日期")

 

vars("idx") = 0
Dim t As Table = Tables("大委托.小委托")
Dim count As Integer = 0
Dim sum As Double = 0
For i As Integer = 1 To 3
    If vars("idx") >= 0 AndAlso vars("idx") + i <= t.Rows.count Then
        Dim r As Row = t.Rows(vars("idx") + i - 1)
        e.Form.controls("txt_l" & i & "_01").Text = r("项目摘要_第一行")
        For j As Integer = 2 To 11
            e.Form.controls("txt_l" & i & "_" & Format(j, "00")).Text = GetDigit(r("金额合计"),9-j)
        Next
        e.Form.Controls("txt_l" & i & "_12").Text = r("收款单位_名称")
        e.Form.Controls("txt_l" & i & "_13").Text = r("收款单位_开户行")
        e.Form.Controls("txt_l" & i & "_14").Text = r("收款单位_账号")
        count += r("附件张数")
        sum += r("金额合计")
    Else
        e.Form.controls("txt_l" & i & "_01").Text = Nothing
        For j As Integer = 2 To 11
            e.Form.controls("txt_l" & i & "_" & Format(j, "00")).Text = Nothing
        Next
        e.Form.Controls("txt_l" & i & "_12").Text = Nothing
        e.Form.Controls("txt_l" & i & "_13").Text = Nothing
        e.Form.Controls("txt_l" & i & "_14").Text = Nothing
    End If
   
Next
e.Form.Controls("TextBox34").Text = count
For j As Integer = 1 To 10
    e.Form.controls("lbl_" & Format(j, "00")).Text = GetDigit(sum,8-j)
    e.Form.controls("lbl_d" & Format(j, "00")).Text = iif(GetDigit(sum,8-j,"")="零", Nothing, CUNum(val(GetDigit(sum,8-j,""))))
Next

  
   
    Dim v As String ="默认打印机"
    For Each p As String In InstalledPrinters
        v = v &"|"& p
    Next
    e.Form.Controls("选择打印机").combolist = v


--  作者:大红袍
--  发布时间:2016/2/29 17:25:00
--  
不可能不行。贴出你筛选日期的代码。
--  作者:scstrty666
--  发布时间:2016/2/29 17:38:00
--  

前两行就是筛选日期的代码

Dim cmb As WinForm.ComboBox = e.form.Controls("筛选日期")
cmb.ComboList = DataTables("小委托").GetComboListString("日期")

[此贴子已经被作者于2016/2/29 17:38:57编辑过]

--  作者:大红袍
--  发布时间:2016/2/29 17:42:00
--  

那你把afterLoad事件的代码写到控件的TextChanged事件去。

 

不行,就上传具体实例。


--  作者:scstrty666
--  发布时间:2016/2/29 18:16:00
--  
还是不行,知道你下班了,但我还是传上来你明天上班时帮我看一下。主要是大委托窗口的问题。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:票据打印.table
,顺便帮我测试一下,我准备发布了。谢谢!