在列表框中显示 SQL 个表

Display SQL Tabe in listbox

目前,以下代码的结果显示为单列中的一个列表。如何修改代码以在单独的列中显示每个字段?非常感谢。

Private Sub loadSelection()

'Add Params and run query
sql.addParam("@productName", "%" & productSearch.Text & "%")

sql.ExecQuery("SELECT itemName, category, itemID " &
          "FROM Inventory " &
          "WHERE product LIKE @productName;")

    'Report & abort on errors
    If sql.HasException(True) Then Exit Sub

    'loop rows and return users to the list
    For Each r As DataRow In sql.DBDataTable.Rows
         listBox1.Items.Add(r("itemName"))
         listBox1.Items.Add(r("category"))
         listBox1.Items.Add(r("itemID"))
    Next

End Sub

使用列表视图

这里有一个选项 list view control:

 Dim listItem As ListViewItem = Form.lvwListCtl.Items.Add(r("itemID"))

 listItem.SubItems.Add(r("itemName"))
 listItem.SubItems.Add(r("category"))
              

将视图 属性 设置为 lvwListCtl.View = System.Windows.Forms.View.Details

使用列表框

这有点“hacky”;但是,你可以做这样的事情。添加一行,并将每个字段格式化为固定长度,如下所示:

listBox1.Items.Add(r("itemName").ToString.PadRight(100, " ") & r("category").ToString.PadRight(50, " ") & r("itemID").ToString.PadRight(10, " ")

注意:任一选项都需要处理返回的 NULL 值。

您不应该使用 ListBoxListView。您应该使用 DataGridView 控件并通过 BindingSource 进行绑定。在设计器中将两者都添加到您的表单中,然后执行此操作:

myBindingSource.DataSource = sql.DBDataTable
myDataGridView.DataSource = myBindingSource

默认情况下,这将在 运行 时间自动在网格中创建列。如果您需要默认行为以外的东西,您可以在 运行 时间自己创建列并设置它们 DataPropertyName 以使其绑定到特定的数据源列。

另请注意,这会在 DataTable 和网格之间创建实时关系。这意味着您不能将相同的 DataTable 重新用于绑定到该网格的其他数据。我看到其他人在使用您创建的 DAL 时就是这么做的。我有很多这样的 DAL 是出于好意而实施的,但结果很差。