如何在vb.net中的datagrid中绑定特定的SQL列?

时间:2018-11-21 17:58:54

标签: vb.net

我正在研究重要项目,当我在文本框中按itemcode搜索时,我想显示从sql数据库到datagridview的特定列。我已经编写了代码,但是显示错误。有人可以帮我吗?

我的代码在这里

Public Class Form8

Private Const constr As String = "server= PANKAJ\SQLEXPRESS; database = pankaj billing software; integrated security=true"
Private bs As BindingSource = New BindingSource
Private dt As DataTable = New DataTable
Dim adapter As SqlDataAdapter
Private cb As SqlCommandBuilder



Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    adapter = New SqlDataAdapter("select * from stockdata", constr)
    cb = New SqlCommandBuilder(adapter)
    adapter.Fill(dt)
    bs.DataSource = dt
    DataGridView1.DataSource = bs


    dt.Clear()
    adapter.SelectCommand.CommandText = "select * from customerdata where itemcode = @itemcode"

    adapter.SelectCommand.Parameters.AddWithValue("@itemcode", TextBox2.Text)




    'Set AutoGenerateColumns False
    DataGridView1.AutoGenerateColumns = False

        'Set Columns Count
        DataGridView1.ColumnCount = 3

        'Add Columns
        DataGridView1.Columns(0).Name = "stockId"
        DataGridView1.Columns(0).HeaderText = "Stock Id"
        DataGridView1.Columns(0).DataPropertyName = "stockID"

        DataGridView1.Columns(1).Name = "itemcode"
        DataGridView1.Columns(1).HeaderText = "Item Code"
        DataGridView1.Columns(1).DataPropertyName = "itemcode"

        DataGridView1.Columns(2).Name = "item"
        DataGridView1.Columns(2).HeaderText = "Item"
        DataGridView1.Columns(2).DataPropertyName = "item"
        DataGridView1.DataSource = dt




End Sub

1 个答案:

答案 0 :(得分:0)

  1. DataAdapter的构造函数将字符串和连接作为参数。新的SqlDataAdapter(string,SqlConnection)。您传入的是字符串(constr),而不是连接。
  2. 仅检索所需的数据,而不是所有带有“ *”的字段。
  3. 在绑定DataGridView之前先对其进行设置。
  4. 不确定customerdata表中的项目代码正在做什么。似乎是数据库设计问题。
  5. 似乎您两次设置了DataSource属性。

我不擅长DataGridView(在需要他时,@ Plutonix在哪里),所以这可能需要一些调整。

Private Const constr As String = "server= PANKAJ\SQLEXPRESS; database = pankaj billing software; integrated security=true"
    Private bs As BindingSource = New BindingSource
    Private dt As DataTable = New DataTable
    Dim adapter As SqlDataAdapter
    Private cb As SqlCommandBuilder
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim cn As New SqlConnection(constr)
        'Get the real column names from your database for StockId, ItemCode and Item
        adapter = New SqlDataAdapter("Select StockId, ItemCode, Item From stockdata Where itemcode = @itemcode;", cn)
        adapter.SelectCommand.Parameters.AddWithValue("@itemcode", TextBox2.Text)
        cb = New SqlCommandBuilder(adapter)
        adapter.Fill(dt)
        'Set AutoGenerateColumns False
        DataGridView1.AutoGenerateColumns = False

        'Set Columns Count
        DataGridView1.ColumnCount = 3

        'Add Columns
        DataGridView1.Columns(0).Name = "stockId"
        DataGridView1.Columns(0).HeaderText = "Stock Id"
        DataGridView1.Columns(0).DataPropertyName = "stockID"

        DataGridView1.Columns(1).Name = "itemcode"
        DataGridView1.Columns(1).HeaderText = "Item Code"
        DataGridView1.Columns(1).DataPropertyName = "itemcode"

        DataGridView1.Columns(2).Name = "item"
        DataGridView1.Columns(2).HeaderText = "Item"
        DataGridView1.Columns(2).DataPropertyName = "item"
        'DataGridView1.DataSource = dt
        bs.DataSource = dt
        DataGridView1.DataSource = bs
End Sub