Это мой второй опыт работы с VB.net, поэтому я не уверен в языке. Я пытаюсь создать значения списка из моего столбца таблицы под названием «категория». Есть дубликаты, поэтому я пытаюсь только отображать каждую категорию один раз. Я должен сделать это так, потому что пользователь может добавить больше категорий, что означает, что мои значения в списке должны динамически обновляться.Создать значения из базы данных
Я не уверен, что я делаю это процесс право:
Protected Sub CategoryListBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CategoryListBox.SelectedIndexChanged
Dim conn As OleDbConnection = New OleDbConnection("Provider=""*******"";user id=" & strUserID & ";data source=" & strDatabase & ";password=" & strPssWd)
Dim ClassifiedStr As OleDbCommand = New OleDbCommand("SELECT classid, Addate, username, category, description FROM t_classifieds", conn)
Dim OracleDataAdapterAds As OleDbDataAdapter = New OleDbDataAdapter
OracleDataAdapterAds.SelectCommand = ClassifiedStr
Dim DsAds As DataSet = New DataSet
DsAds.Clear()
OracleDataAdapterAds.Fill(DsAds, "t_classifieds")
CategoryListBox.DataTextField = "category"
CategoryListBox.DataValueField = "category"
CategoryListBox.DataSource = DsAds
CategoryListBox.DataMember = "t_classifieds"
CategoryListBox.DataBind()
Dim Categories As String
Dim CategoryID
For Each dr As DataRow In DsAds.Tables("t_classifieds").Rows
Categories = dr("category").ToString()
CategoryID = dr("classid").ToString()
CategoryListBox.Items.Add(Categories)
Next dr
conn.Close()
End Sub
Я посмотрел на другие примеры, и я попытался отразить их, но ничего не печатает в моем ListBox.
Моя вторая версия моего кода работает, если я использую предопределенное значение Dim, но по какой-то причине я не получаю подключение к базе данных для отображения списка категорий базы данных.
Вторая версия:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
FillList()
End Sub
Private Sub FillList()
Dim conn As OleDbConnection = New OleDbConnection("Provider=""MSDAORA.1"";user id=" & strUserID & ";data source=" & strDatabase & ";password=" & strPssWd)
Dim data_reader As OleDbDataReader
Dim ClassifiedStr As OleDbCommand = New OleDbCommand("SELECT * FROM t_classifieds ", conn)
Dim Categories
conn.Open()
data_reader = ClassifiedStr.ExecuteReader()
CategoryListBox.Items.Clear()
If data_reader.HasRows Then
Do While data_reader.Read()
Categories = data_reader.Item("category")
'CategoryListBox.Items.Add(New ListItem(Categories))
CategoryListBox.Items.Add(Categories.ToString())
Loop
End If
data_reader.Close()
data_reader = Nothing
ClassifiedStr.Dispose()
ClassifiedStr = Nothing
conn.Close()
conn.Dispose()
'Dim dWorkDate As Date = CDate("01.01.2014")
'While dWorkDate < Date.Today
'CategoryListBox.Items.Add(dWorkDate.ToString("dd.MM.yyyy"))
'dWorkDate = dWorkDate.AddDays(1)
'End While
End Sub
Я сделал то, что вы предложили и DisplayMember дал мне ошибку о том, что не может быть использована для ListBox. Кроме того, пока ничего не отображается для моего списка – narue1992
Oh, ASP. СЕТЬ. Как я пропустил эти теги. См. Обновление. – Keith
Я вижу обновление, но ничего не печатает. Не знаете, в чем проблема:/ – narue1992