#vb.net #web-applications
#vb.net #веб-приложения
Вопрос:
Что я пытаюсь сделать, так это отобразить два столбца в списке, чтобы у пользователя было больше информации. Я заполняю listbox с помощью SqlDataSource с пользовательским запросом, а затем прикрепляю этот источник данных к listbox.
Моя проблема заключается в источнике данных, я могу выбрать только два значения, одно для отображения списка, а другие значения — выбрать значение поля данных для списка.
Как я могу отобразить значения нескольких столбцов из SqlDataSource в Listbox?
Ответ №1:
Сначала создайте класс для своих данных. Я добавил параметризованный конструктор, чтобы было легко создать кофе без отдельной настройки свойств. Я также переопределил .Метод toString, чтобы ListBox отображал то, что я хочу. Если вам действительно нужны столбцы, вы вводите отступ до заданной длины.
Public Class Coffee
Public Property Name As String
Public Property Type As String
Public Sub New(cofName As String, cofType As String)
Name = cofName
Type = cofType
End Sub
Public Overrides Function ToString() As String
Return $"{Name}, {Type}"
End Function
End Class
Чтобы заполнить список, создайте новый coffee и добавьте его в список.
Private CoffeeList As New List(Of Coffee)
Private Sub FillCoffeeList()
Using cn As New SqlConnection(My.Settings.CoffeeConnection),
cmd As New SqlCommand("Select Top 10 Name, Type From Coffees;", cn)
cn.Open()
Using reader = cmd.ExecuteReader
While reader.Read
Dim c As New Coffee(reader.GetString(0), reader.GetString(1))
CoffeeList.Add(c)
End While
End Using
End Using
End Sub
Затем на странице.Загрузить
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
FillCoffeeList()
ListBox1.DataSource = CoffeeList
ListBox1.DataBind()
End If
End Sub
ListBox вызывает .Вводит строку для каждого объекта Coffee в CoffeeList и отображает то, что мы определили в классе.