2013-10-02 4 views
0

Как я могу автоматически обновлять и просматривать новое текущее datagridview после добавления или удаления? Какой код следует поместить после «msgbox» для просмотра текущих данных?Как обновить datagridview без кнопки обновления?

Private Sub add() 
    Dim conn As New OleDbConnection 
    Dim cmd As New OleDbCommand 
    Dim sSQL As String = String.Empty 
    Try 
     conn = New OleDbConnection(Get_Constring) 
     conn.Open() 
     cmd.Connection = conn 
     cmd.CommandType = CommandType.Text 
     sSQL = "INSERT INTO course (code, description)" 
     sSQL = sSQL & " VALUES (@cod, @des)" 
     cmd.CommandText = sSQL 
     cmd.Parameters.Add("@cod", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtcode.Text)) > 0, Me.txtcode.Text, DBNull.Value) 
     cmd.Parameters.Add("@des", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtdescription.Text)) > 0, Me.txtdescription.Text, DBNull.Value) 
     cmd.ExecuteNonQuery() 
     MsgBox("Data has been save.") 

     conn.Close() 
    Catch ex As Exception 
     MessageBox.Show("Already exist") 
    End Try 
End Sub 

ответ

0

Вы должны связать ваш DataGridView к соответствующему DataSource, например, a DataTable.

Затем, вместо того, чтобы вручную вводить данные в базу данных, вы можете использовать SqlDataAdapter, а DataTable связан с вашим DataGridView.

Вот простой пример:

Dim cons = New SqlConnectionStringBuilder() With 
    { 
       .DataSource = "your_server", 
       .InitialCatalog = "your_db", 
       .UserID = "your_user", 
       .Password = "your_password" 
    }.ConnectionString 

Dim con = New SqlConnection(cons) 
con.Open() 

' create a SqlDataAdapter and provide the SELECT command ' 
Dim adapter = New SqlDataAdapter() 
Dim cb = New SqlCommandBuilder(adapter) 
adapter.SelectCommand = New SqlCommand("SELECT code, description FROM course", con) 
' the INSERT command can be generated ' 
adapter.InsertCommand = cb.GetInsertCommand() 

' fill a new DataTable with data from database ' 
Dim dt = New DataTable() 
adapter.Fill(dt) 

' create a Form with DGV and Insert-Button ' 
Dim f = New Form() 
Dim dgv = New DataGridView() With 
{ 
    .DataSource = dt, 
    .Dock = DockStyle.Fill 
} 

Dim addButton = New Button() With 
{ 
    .Text = "Add new", 
    .Dock = DockStyle.Bottom 
} 

Dim i = 0 
AddHandler addButton.Click, Function(s, o) 
           ' we insert the new data directly into the DataTable ' 
           dt.Rows.Add(New Object() {"Some","Text"}) 
           ' and let the SqlDataAdapter handle the insert ' 
           adapter.Update(dt) 
          End Function 

f.Controls.Add(addButton) 
f.Controls.Add(dgv) 
f.ShowDialog() 

Поскольку новые данные записываются непосредственно в DataTable, то DataGridView обновляется немедленно.

Конечно, это еще проще, если вы используете TableAdapters.

Смежные вопросы