2011-10-07 55 views
0

我有一个由datagridview和两个按钮的更新和加载所有..我用fillby方法从数据库中获取数据。该查询似乎工作正常,但数据不显示在gridview中。Datagrid和数据库

在查询中,如果返回的行是2,它将在gridview中显示3行,但全部为空。

Imports System.Data 
Imports System.Data.OleDb 
Imports System.EventArgs 
Imports System.Data.OleDb.OleDbConnection 
Imports System.Data.OleDb.OleDbCommand 

Public Class Form1 
    Inherits System.Windows.Forms.Form 

    Dim wrkdir As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location()) 
    Dim da As New OleDbDataAdapter 
    Dim ds As New DataSet 
    Dim bs As New BindingSource 
    Dim edit As Boolean 
    'Dim cnn As OleDbConnection 


    Dim cnn As New OleDbConnection("Provider=microsoft.jet.oledb.4.0;Data Source=E:\Project-Hemtech\HemDatabase1.mdb;") 

    'cnn = New OleDbConnection("Provider=microsoft.jet.oledb.4.0;Data Source=E:\Project-Hemtech\HemDatabase1.mdb;") 
    'cnn.Open() 

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click 

     If edit Then 
      da.Update(ds, "partno") 
      edit = False 
     End If 

    End Sub 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     'TODO: This line of code loads data into the 'HemDatabase1DataSet.partno' table. You can move, or remove it, as needed. 
     Me.PartnoTableAdapter.Fill(Me.HemDatabase1DataSet.partno) 

     dgv1.DataSource = bs 

     'Dim cnn As New OleDbConnection("Provider=microsoft.jet.oledb.4.0;Data Source=E:\Project-Hemtech\HemDatabase1.mdb;") 
     'cnn = New OleDbConnection("Provider=microsoft.jet.oledb.4.0;Data Source=E:\Project-Hemtech\HemDatabase1.mdb;") 
     'cnn.Open() 

    End Sub 

    Private Sub button2_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click 

     ds.Tables.Clear() 

     If tsText.Text <> "" Then 

      Dim sql As String = "SELECT partno.partnum, partno.partname, partno.partdesc, partno.partqty " & _ 
           "FROM(partno)" & _ 
           "WHERE (((partno.type)='" & tsText.Text & "'));" 

      Dim cmd As New OleDbCommand(sql, cnn) 

      da.SelectCommand = cmd 

      Dim cmdBuilder As New OleDbCommandBuilder(da) 

      da.Fill(ds, "partno") 
      bs.DataSource = ds.Tables(0) 

     Else 

      Exit Sub 

     End If 
    End Sub 

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles button3.Click 

     ds.Tables.Clear() 

     Dim sql As String = "SELECT * FROM partno;" 
     Dim cmd As New OleDbCommand(sql, cnn) 

     da.SelectCommand = cmd 

     Dim cmdbuilder As New OleDbCommandBuilder(da) 
     da.Fill(ds, "partno") 
     bs.DataSource = ds.Tables(0) 

    End Sub 

    Private Sub FillByToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click 
     Try 
      Me.PartnoTableAdapter.FillBy(Me.HemDatabase1DataSet.partno, tsText.Text) 
     Catch ex As System.Exception 
      System.Windows.Forms.MessageBox.Show(ex.Message) 
     End Try 

    End Sub 
End Class 

回答

0

你应该在每一个按钮添加事件dgv1.DataSource = bs以便在GridView上的数据将更新

+0

我这样做..当我的两个按钮添加,它停止显示的数据。我加在更新按钮,它会更新!对于加载按钮,我使用: dgv1.DataSource = Me。 HemDatabase1Dataset.partno 但是,这两个表面上都很好,但在单击加载按钮时,它不会显示指定类型的更新数据 即。我的新纪录是电子类型。 当我点击更新,上述提到的更改后,它显示网格中更新的记录。当我点击“加载全部”按钮时,通过提及上面的类型,它给了我之前的类型电子记录,但不是新添加的。 – Ruchi22