程序界面如上图所示,用datagrid绑定数据并同时绑定到textbox
要求:
1、随着datagrid(只读)记录指针的移动,textbox的内容随着变化
2、实现修改、添加、删除操作
说明:
为了方便操作,所有textbox均取名为“test“+相应的字段名
==========================================================
功能程序代码如下:
Imports System
Imports System.Reflection
Public Class Frm1
Inherits System.Windows.Forms.Form
Dim OleDbConn1 As New System.Data.OleDb.OleDbConnection
Dim dataset1As New System.Data.DataSet
Dim adapter1 As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter("Select * from 表1", OleDbConn1 )
'注意,此处用OleDbCommandBuilder与adapter1 相关联,自动生成相应的添加、删除、更新SQL语句
Dim CB_adapter1As System.Data.OleDb.OleDbCommandBuilder = New System.Data.OleDb.OleDbCommandBuilder(adapter1)
Private Sub Frm1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
OleDbConn1 .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" d:/test/test.mdb"
OleDbConn1 .Open()
'填充
adapter1 .Fill(dataset1, "表1")
'将数据绑定到datagrid
Me.DataGrid1.DataSource = dataset1.Tables("表1")
'下面的代码将字段值绑定到相应的textbox
For i = 0 To dataset1.Tables("表1").Columns.Count - 1
'根据textbox的名字得到相应的实例
namestr = ""
namestr = "test" & dataset1.Tables("表1").Columns.Item(i).Caption
Dim t As Type = Me.GetType
Dim f As FieldInfo = t.GetField("_" & namestr, BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.Public)
Dim MyControl As TextBox = CType(f.GetValue(Me), TextBox)
'将得到的textbox实例执行相应的数据绑定
MyControl.DataBi