Как включить несколько столбцов для списка в VB.NET веб-приложение?

#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 и отображает то, что мы определили в классе.