2011-03-10 58 views
0

我有几个组合框,需要加载一次并显示多次(每当主窗体打开)原因是因为由于不必要的重新查询,每次打开表单需要大约10秒的时间。尝试加载组合框值一次(在登录屏幕)vb.net

这里是我作为一个组合框源和我做了什么的例子。

我已经把查询,连接等等放在一个模块中,并在登录表单上调用它 - 我没有得到任何错误,但数据不会加载到组合中。

'In Module 
sql = "SELECT DIR_ID, DIR_NM FROM LTC_FBS_DIR ORDER BY DIR_NM ASC" 
RConStr = String.Format(RConStrFormat, LoginForm.txtUser.Text, LoginForm.txtPass.Text) 
'using instead of dim connemp 
Dim connemp4 As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(RConStr) 
connemp4.Open() 
Dim datemp4 As OleDbDataAdapter = New OleDbDataAdapter(sql, connemp4) 
datemp4.Fill(ds, "Dir") 


'Form Load event 

Dim tbl4 As DataTable = ds.Tables("Dir") 
DBS_DIRECTORComboBox.DisplayMember = "DIR_NM" 
DBS_DIRECTORComboBox.ValueMember = "DIR_ID" 
DBS_DIRECTORComboBox.DataSource = tbl4 
+0

装入一个,而不是其他控件,或者根本没有任何控制的项目?表单在哪里获得对ds的引用,模块在哪里调用? – David 2011-03-10 18:12:03

+1

哪些Windows窗体或Web窗体?你在谈论asp.net吗? – 2011-03-10 18:15:23

+0

窗体窗体,我在登录窗体上调用模块。 – gfuller40 2011-03-10 18:30:05

回答

0

你的代码看起来不错;确保数据集中有一些数据和/或尝试跳过表映射,我的意思是改变你的代码行。

替换该行

datemp4.Fill(ds, "Dir") 

这一行

datemp4.Fill(ds) 

也替换该行

//' in Form Load event 
Dim tbl4 As DataTable = ds.Tables("Dir") 

有了这一个

Dim tbl4 As DataTable = ds.Tables(0) 
+0

我已经尝试了建议,它现在在组合框中返回一系列“System.Data.DataRowView”行...似乎它做得更多,但仍然无法正常工作。 – gfuller40 2011-03-10 19:18:39

+0

oops我的意思是只替换这两行,但是你的评论说你做的不止这些。 – 2011-03-10 19:24:27

+0

没有这是我做的......但是我在corrosponding组合框中获得了system.data.dataroview消息的多行。 – gfuller40 2011-03-10 19:56:42