2011-10-07 51 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