以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]Comobox SelectedIndexChanged事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=37187)

--  作者:xu3180497
--  发布时间:2013/7/2 15:52:00
--  [求助]Comobox SelectedIndexChanged事件

现在有个界面,界面很简单,一个Combobox,一个Table。Table绑定了一张表,该表中有一列字段是统计年份,取值有2011,2012,2013。Combobox现在也能够自动列出该表统计年份的值。Table也能根据选择的年份显示当年的运行数据。

现在还有一个问题,我在那个窗口界面下放了几个lable和textbox,用于显示表格的某些统计信息,希望在selectedindexchanged事件触发的时候,显示的表格的数据就会自动计算好然后填充到我的textbox中,但是不知道怎么弄呢?

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130702152311.png
图片点击可在新窗口打开查看
表中计划运行时间是固定值:24*365,实际运行时间就是某年“运行时间(H)”列的sum汇总值,其他的反正可以算出来,就告诉我这两个怎么去实现就行了。

界面中的textbox我都设为只读了,另外修改了一下背景颜色,应该不会影响吧?

另外贴上我的selectedindexchanged的代码:

Dim cmb As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim txt1 As String = e.Form.Controls("TextBox1").Value
Dim txt2 As Double = e.Form.Controls("TextBox2").Value
Dim txt3 As String = e.Form.Controls("TextBox3").Value
Dim txt4 As String = e.Form.Controls("TextBox4").Value
Dim txt5 As String = e.Form.Controls("TextBox5").Value
Dim txt6 As String = e.Form.Controls("TextBox6").Value
Dim txt7 As String = e.Form.Controls("TextBox7").Value
Dim txt8 As String = e.Form.Controls("TextBox8").Value
Dim txt9 As String = e.Form.Controls("TextBox9").Value
Dim txt10 As String = e.Form.Controls("TextBox10").Value
Dim str As String = cmb.Value
Dim tbl As Table = Tables("设备运行表")
Dim p As Integer = tbl.Cols("运行时间").Index
If str IsNot Nothing Then
    tbl.Filter = "统计年份 = " &  "\'" & str & "\'"
    txt2 = tbl.Aggregate(AggregateEnum.Sum,0,p,11,p)
Else
    tbl.Filter = ""
End If

执行后切换年份的选择TextBox没有丝毫变化,求指教!

--  作者:狐狸爸爸
--  发布时间:2013/7/2 16:01:00
--  

1、你这些TextBox绑定到窗口中这个表的各列了吗?如果没有绑定,自然不会发生变化。

2、你下面这些代码,意义何在?

 

Dim txt1 As String = e.Form.Controls("TextBox1").Value
Dim txt2 As Double = e.Form.Controls("TextBox2").Value
Dim txt3 As String = e.Form.Controls("TextBox3").Value
Dim txt4 As String = e.Form.Controls("TextBox4").Value
Dim txt5 As String = e.Form.Controls("TextBox5").Value
Dim txt6 As String = e.Form.Controls("TextBox6").Value
Dim txt7 As String = e.Form.Controls("TextBox7").Value
Dim txt8 As String = e.Form.Controls("TextBox8").Value
Dim txt9 As String = e.Form.Controls("TextBox9").Value
Dim txt10 As String = e.Form.Controls("TextBox10").Value


--  作者:Bin
--  发布时间:2013/7/2 16:03:00
--  
你这位什么会有变化?你的TextBOx都绑定列了吗?  

如果没有,你也没为他们赋值,它当然不会变化啊.

--  作者:xu3180497
--  发布时间:2013/7/2 16:05:00
--  
不应该绑定啊,下面的这些textbox并不是简单的表中的列的值啊,比如计划运行时间就是一个固定值:24*365,实际运行时间是表中运行时间(H)这列的年度汇总值,怎么能够绑定呢?
--  作者:Bin
--  发布时间:2013/7/2 16:09:00
--  
不是说要你绑定列,而是看不懂你要干嘛,既不绑定 也不赋值 那么值从何来?
--  作者:狐狸爸爸
--  发布时间:2013/7/2 16:09:00
--  

如果你在TextBox对筛选后的数据进行统计,可以:

 

\'原来的筛选代码

e.Form.Controls("TextBox1").Value  = Tables("表名").Compute("Sum([某某列1])")

e.Form.Controls("TextBox2").Value  = Tables("表名").Compute("Sum([某某列2])")


 


--  作者:xu3180497
--  发布时间:2013/7/2 16:09:00
--  

我就是想通过在selectedindexchanged这个事件中通过选择不同的年份然后给这些textbox赋不同的值啊,我的代码中不是有赋值的语句吗?是不是语句不对呢?

给textbox1赋值难道下面的写法不对吗?

Dim txt1 As Double = e.Form.Controls("TextBox1").Value

txt = 24 * 365


--  作者:Bin
--  发布时间:2013/7/2 16:11:00
--  
你这是哪门子的赋值,什么跟什么呀.你需要先去看帮助.

e.Form.Controls("TextBox1").Value= 24*365
e.Form.Controls("TextBox2").Value= Tables("表名").Compute("Sum([某某列2])")

--  作者:Bin
--  发布时间:2013/7/2 16:13:00
--  
楼主你可能没搞清楚 变量的问题, 你这样并不是把TextBox当作变量来使用 而是把TextBox的值赋值到 一个String变量里面去.


而且就算你想把TextBox当作变量来使用,你也没有把变量赋值啊.

--  作者:xu3180497
--  发布时间:2013/7/2 16:13:00
--  
知道了,好吧 ,我犯糊涂了,我赋值的是中间变量,实在是不好意思啊!