读书人

问一个datagridview代码绑定的刷新有关

发布时间: 2011-12-08 21:33:54 作者: rapoo

问一个datagridview代码绑定的刷新问题
我的程序里有一个datagridview控件,通过以下代码绑定到数据库的表table1 ,按button2以后datagridview显示数据,同时要求满足用户在datagridview中进行修改/删除等操作的以后按button1数据库里相应信息能刷新,再按button2能显示修改过的数据.


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim strsql As String

strsql = " select name2 from table1 where id= '" & TextBox1.Text & "'and name1= '" & TextBox2.Text & "' "



Dim myDa1 As SqlDataAdapter = New SqlDataAdapter(strsql, myConn)

Dim ds1 As New DataSet

myDa1.Fill(ds1, "result")
DataGridView1.DataSource = ds1.Tables("result")


End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
myDa1.Update(ds1.Tables("result"))

ds1.AcceptChanges()

End Sub

报错提示myda1 和ds1 没有定义,请问button1_click的代码如何写才能完成需求?谢谢!

[解决办法]
将ds1和myDa1声明从Button2_Click中移出,成为类的私有成员。

在Button1_Click中调用
myDa1.Update(ds1),不需要调用AcceptChanges,因为Update已调用过。
代码改成如下所示:

VB.NET code
        Dim myDa1 As SqlDataAdapter           Dim ds1 As DataSet Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click         Dim strsql As String         strsql = " select name2  from table1 where id= '" & TextBox1.Text & "'and name1= '" & TextBox2.Text & "'  "                 myDa1= New SqlDataAdapter(strsql, myConn)         ds1 = New DataSet()        Dim builder As SqlCommandBuilder = _            New SqlCommandBuilder(myDa1)        myDa1.Fill(ds1, "result")         DataGridView1.DataSource = ds1.Tables("result")     End Sub     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         myDa1.Update(ds1)     End Sub
[解决办法]
Public Class Form1

Dim SqTex As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=E:\temp\Tsq.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
Dim myConn As New SqlClient.SqlConnection(SqTex)


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'条件查询
Dim strsql As String

strsql = "SELECT * from 数据表 where ID= '" & TextBox1.Text & "'AND 名称= '" & TextBox2.Text & "'"

Dim myDa1 As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(strsql, myConn)

Dim ds1 As New DataSet

myDa1.Fill(ds1, "数据表")
DataGridView1.DataSource = ds1
DataGridView1.DataMember = "数据表"

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 更新数据到数据库
Dim ds1 As DataSet = DataGridView1.DataSource

Dim Ad As New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM 数据表", myConn)
Dim SqlBuild As New SqlClient.SqlCommandBuilder(Ad)

'--------先括条件表中须有主键--------------否则出错!-----
Ad.DeleteCommand = SqlBuild.GetDeleteCommand
Ad.InsertCommand = SqlBuild.GetInsertCommand
Ad.UpdateCommand = SqlBuild.GetUpdateCommand
Ad.Update(ds1, "数据表")

End Sub

Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed


myConn.Close()

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
myConn.Open()
Call SqlFill()

End Sub

Private Sub SqlFill()

Dim Ad As New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM 数据表", myConn)
Dim ds1 As New DataSet

Ad.Fill(ds1, "数据表")
DataGridView1.DataSource = ds1
DataGridView1.DataMember = "数据表"

End Sub


Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'条件删除
Dim strsql As String
strsql = "DELETE FROM 数据表 where ID= '" & TextBox1.Text & "'AND 名称= '" & TextBox2.Text & "'"

'获取行号
' Dim Pot As Point = DataGridView1.CurrentCellAddress
'--------------------------------------------
' DataGridView1.Rows.RemoveAt(Pot.Y)
'------------------------------------------------
Dim delComm As New SqlClient.SqlCommand(strsql, myConn)
delComm.ExecuteNonQuery()
Call SqlFill()

End Sub

End Class

读书人网 >VB Dotnet

热点推荐