2016-01-21 4 views
0

Я заполняю раскрывающийся список asp, считывая данные из таблицы MySQL через хранимую процедуру.Выпадающий список VB.NET, не заполняющий всеми элементами

Устройство чтения данных возвращает все 4 строки из таблицы, однако в выпадающем списке перечислены только строки 2, 3, 4.

Это код, который устанавливает раскрывающийся список. Есть ли у кого-нибудь идеи о том, что могло пойти не так?

Благодаря

Try 
     Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString) 
     Dim cmd As New MySqlCommand() 

     conn.Open() 
     cmd.Connection = conn 
     cmd.CommandText = "Select_CatLibraryData" 
     cmd.CommandType = CommandType.StoredProcedure 

     Using catdata_rs As MySqlDataReader = cmd.ExecuteReader() 

      If catdata_rs.Read() Then 
       list_itemcategory.DataSource = catdata_rs 
       list_itemcategory.DataValueField = "category" 
       list_itemcategory.DataTextField = "category" 
       list_itemcategory.DataBind() 
      End If 

     End Using 

    Catch ex As MySql.Data.MySqlClient.MySqlException 

     lbl_ErrorPanelText.Text = "Error establishing a database connection!" 
     pn_ErrorPanel.Visible = True 

    End Try 
+0

Использование SqlDataAdapter с DataSet или DataTable, а не Reader. Я думаю, что это лучший способ – Khazratbek

ответ

1

Вы не должны использовать If catdata_rs.Read(), поскольку он продвигает указатель на 1.

Вместо этого используйте код, как показано ниже. Или вы можете просто удалить окружение if вокруг кода привязки данных и напрямую привязать к считывателю данных, и если его пустой, то ваш список будет опущен.

If catdata_rs.HasRows Then 
      list_itemcategory.DataSource = catdata_rs 
      list_itemcategory.DataValueField = "category" 
      list_itemcategory.DataTextField = "category" 
      list_itemcategory.DataBind() 
End If