首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

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

2011-12-08 
问一个datagridview代码绑定的刷新问题我的程序里有一个datagridview控件,通过以下代码绑定到数据库的表ta

问一个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

热点排行