我将datagrid中某个单元格与combobox绑定,在combobox中选择值,并当焦点离开该单元格后,希望把选择的值写入该单元格该怎么做呀?

解决方案 »

  1.   

    '----------------------------------------------------------------------------
    '
    'Author:lihonggen0
    'Date:2003-6-18
    '功能:DataGrid1上附加COMBO和CheckBox
    '在form上添加一个DataGrid1、一个COMBO和一个CheckBox控件放到屏幕上任何位置都可以
    '----------------------------------------------------------------------------
    '工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.RecordsetPrivate Sub Combo1_LostFocus()
        Rs.Fields(3) = Combo1.Text
       
    End SubPrivate Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
        Select Case DataGrid1.Col
            Case 2
                Check1.Visible = True
                Check1.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                Check1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                Check1.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight) + (DataGrid1.HeadLines) * 195
                Check1.SetFocus
                Combo1.Visible = False
            Case 3
                Check1.Visible = False
                Combo1.Visible = True
                Combo1.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                Combo1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                Combo1.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight) + (DataGrid1.HeadLines) * 195
                Combo1.SetFocus
                If DataGrid1.Columns(DataGrid1.Col).Text <> "" Then
                    Combo1.Text = DataGrid1.Columns(DataGrid1.Col).Text
                End If
                
            Case Else
                Combo1.Visible = False
                Check1.Visible = False
        End SelectEnd SubPrivate Sub Form_Load()
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=northwind;User Id=sa;Password=sa;"    CN.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from employees", CN, adOpenDynamic, adLockBatchOptimistic
        Combo1.AddItem "aaaa"
        Combo1.AddItem "bbbb"   Set DataGrid1.DataSource = Rs
    End Sub
      

  2.   

    '----------------------------------------------------------------------------
    '
    'Author:lihonggen0
    'Date:2003-6-18
    '功能:DataGrid1上附加COMBO和CheckBox
    '在form上添加一个DataGrid1、一个COMBO和一个CheckBox控件放到屏幕上任何位置都可以
    '----------------------------------------------------------------------------
    '工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.RecordsetPrivate Sub Combo1_LostFocus()
        Rs.Fields(3) = Combo1.Text
       
    End SubPrivate Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
        Select Case DataGrid1.Col
            Case 2
                Check1.Visible = True
                Check1.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                Check1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                Check1.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight) + (DataGrid1.HeadLines) * 195
                Check1.SetFocus
                Combo1.Visible = False
            Case 3
                Check1.Visible = False
                Combo1.Visible = True
                Combo1.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                Combo1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                Combo1.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight) + (DataGrid1.HeadLines) * 195
                Combo1.SetFocus
                If DataGrid1.Columns(DataGrid1.Col).Text <> "" Then
                    Combo1.Text = DataGrid1.Columns(DataGrid1.Col).Text
                End If
                
            Case Else
                Combo1.Visible = False
                Check1.Visible = False
        End SelectEnd SubPrivate Sub Form_Load()
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=northwind;User Id=sa;Password=sa;"    CN.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from employees", CN, adOpenDynamic, adLockBatchOptimistic
        Combo1.AddItem "aaaa"
        Combo1.AddItem "bbbb"   Set DataGrid1.DataSource = Rs
    End Sub
      

  3.   

    Private Sub Combo1_LostFocus()
    '将combo的值传给字段,DataGrid会自动跟着更新
        Rs.Fields(3) = Combo1.Text
       
    End Sub