在列表框中显示 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 值。
您不应该使用 ListBox
或 ListView
。您应该使用 DataGridView
控件并通过 BindingSource
进行绑定。在设计器中将两者都添加到您的表单中,然后执行此操作:
myBindingSource.DataSource = sql.DBDataTable
myDataGridView.DataSource = myBindingSource
默认情况下,这将在 运行 时间自动在网格中创建列。如果您需要默认行为以外的东西,您可以在 运行 时间自己创建列并设置它们 DataPropertyName
以使其绑定到特定的数据源列。
另请注意,这会在 DataTable
和网格之间创建实时关系。这意味着您不能将相同的 DataTable
重新用于绑定到该网格的其他数据。我看到其他人在使用您创建的 DAL 时就是这么做的。我有很多这样的 DAL 是出于好意而实施的,但结果很差。
目前,以下代码的结果显示为单列中的一个列表。如何修改代码以在单独的列中显示每个字段?非常感谢。
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 值。
您不应该使用 ListBox
或 ListView
。您应该使用 DataGridView
控件并通过 BindingSource
进行绑定。在设计器中将两者都添加到您的表单中,然后执行此操作:
myBindingSource.DataSource = sql.DBDataTable
myDataGridView.DataSource = myBindingSource
默认情况下,这将在 运行 时间自动在网格中创建列。如果您需要默认行为以外的东西,您可以在 运行 时间自己创建列并设置它们 DataPropertyName
以使其绑定到特定的数据源列。
另请注意,这会在 DataTable
和网格之间创建实时关系。这意味着您不能将相同的 DataTable
重新用于绑定到该网格的其他数据。我看到其他人在使用您创建的 DAL 时就是这么做的。我有很多这样的 DAL 是出于好意而实施的,但结果很差。