У меня есть несколько полей со списком, которые нужно загружать один раз и отображать несколько раз (всякий раз, когда открывается основная форма). Причина этого в том, что загрузка формы занимает около 10 секунд каждый раз, когда она открывается из-за ненужных повторных действий. запрос.

Вот пример того, что у меня есть в качестве источника поля со списком, и что я сделал.

Я поместил запрос, соединение и т. д. в модуль и вызвал его в форме входа - я не получаю никаких ошибок, но данные не загружаются в комбо.

'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
gfuller40 10 Мар 2011 в 21:04
Элементы загружаются в одном, а не в других элементах управления или вообще не загружаются в какие-либо элементы управления? Откуда форма берет ссылку на ds и где вызывается модуль?
 – 
David
10 Мар 2011 в 21:12
1
Какие формы Windows или веб-формы? Вы про asp.net?
 – 
Waqas Raja
10 Мар 2011 в 21:15
Windows, я вызываю модуль в форме входа.
 – 
gfuller40
10 Мар 2011 в 21:30

1 ответ

Ваш код выглядит нормально; Убедитесь, что в наборе данных есть данные и/или попробуйте пропустить сопоставления таблиц, я имею в виду изменение строк кода.

Замените эту строку

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
Waqas Raja 10 Мар 2011 в 22:32
Я попробовал предложенное, и теперь он возвращает серию строк «System.Data.DataRowView» в поле со списком... кажется, что он делает больше, но все еще не работает.
 – 
gfuller40
10 Мар 2011 в 22:18
К сожалению, я хотел заменить только две строки, но ваш комментарий говорит, что вы сделали больше.
 – 
Waqas Raja
10 Мар 2011 в 22:24
Нет, это то, что я сделал... Но я получаю несколько строк сообщений system.data.dataroview в соответствующем поле со списком.
 – 
gfuller40
10 Мар 2011 в 22:56