2011-03-10 38 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