请问如何将Datagrid控件中的每一个单元格显示多个数据,也就是说每个单元格中显示一个按钮,点这个按钮则从一个数据表中显示所要的一列数据!

解决方案 »

  1.   

    可以用个datacombo重叠,当然最好还是用别的GRID控件,象VS什么的
      

  2.   

    用combobox=false
    当双击单元格时,再combobox=true
    把位置移动到当前位置,这样至少在视觉上可以达到这样的效果
      

  3.   

    Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
        Dim hh As Integer
        Dim Xh As Integer
        Dim Cpm As String
        Dim cSpdj1 As Double
        hh = 12
        
        If DataGrid1.Enabled = True Then
            If DataGrid1.Columns(0).Text = "品牌" And DataGrid1.Columns(0).Text = "工艺" And DataGrid1.Columns(0).Text = "规格" And DataGrid1.Columns(0).Text = "TOTAL:" Then
                DataGrid1.Columns(9).Locked = True
            Else
                DataGrid1.Columns(9).Locked = False
            End If
            Select Case DataGrid1.Col
                Case 0
                    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = True
                    Combo4.Visible = False
                    Combo5.Visible = False
                    Combo2.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                    Combo2.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                    Combo2.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                    Combo2.SetFocus
                    If DataGrid1.Columns(0).Text <> "" Then
                        Combo2.Text = DataGrid1.Columns(0).Text
                    End If
                Case 1
                    Check1.Visible = False
                    Combo2.Visible = False
                    Combo4.Visible = False
                    Combo5.Visible = False
                    Text5.Visible = False
                    Select Case DataGrid1.Columns(0).Text
                        Case "品名"
                            Check1.Visible = False
                            Text5.Visible = True
                            Combo2.Visible = False
                            Combo4.Visible = False
                            
                            Text5.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                            Text5.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                            Text5.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                            Text5.SetFocus
                            If DataGrid1.Columns(0).Text <> "" Then
                                Text5.Text = DataGrid1.Columns(1).Text
                            End If
                    End Select
                Case 2
                    Check1.Visible = False
                    Combo2.Visible = False
                    Combo4.Visible = False
                    Combo5.Visible = False
                    Text5.Visible = False
                    Select Case DataGrid1.Columns(0).Text
                        Case "规格"
                            If DataGrid1.Columns(2).Text <> "" Then
                                Text5.Text = DataGrid1.Columns(2).Text
                            Else
                                If Text5.Text <> "" Then
                                    DataGrid1.Columns(2).Text = Text5.Text
                                End If
                            End If
                    End Select
                    If IsNull(Rs_Jc_Shhy_Sp.Fields("ID")) Or Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount Then
                        DataGrid1.Enabled = False
                        Rs_Jc_Shhy_Sp.AddNew
                        Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount
                        Rs_Jc_Shhy_Sp.Fields("HTH") = Text1(0).Text
                        Rs_Jc_Shhy_Sp.MovePrevious
                        DataGrid1.Enabled = True
                    End If
                Case 6
                    Select Case DataGrid1.Columns(0).Text
                        Case "品名"
                            Combo5.Visible = True
                            Combo5.Width = DataGrid1.Columns(DataGrid1.Col).Width + 30
                            Combo5.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                            Combo5.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                            Combo5.SetFocus
                        Case Else
                            Combo5.Visible = False
                    End Select
                Case 8
                    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = False
                    Combo5.Visible = False
                    Select Case DataGrid1.Columns(0).Text
                        Case "价格条款"
                            Combo4.Visible = True
                            Combo4.Width = DataGrid1.Columns(DataGrid1.Col).Width + 30
                            Combo4.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                            Combo4.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                            Combo4.SetFocus
                            If DataGrid1.Columns(8).Text <> "" Then
                                Combo4.Text = DataGrid1.Columns(8).Text
                            End If
                        Case Else
                            Combo4.Visible = False
                    End Select
                Case 9
                    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = False
                    Combo5.Visible = False
                    Select Case DataGrid1.Columns(0).Text
                        Case "品牌", "工艺", "规格", "TOTAL:  "
                            Check1.Visible = False
                        Case Else
                            Check1.Visible = True
                            Check1.Width = DataGrid1.Columns(DataGrid1.Col).Width + 30
                            Check1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                            Check1.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                            Check1.SetFocus
                            If DataGrid1.Columns(9).Text <> "" Then
                                Check1.Value = 1
                            Else
                                Check1.Value = 0
                            End If
                    End Select
                    If IsNull(Rs_Jc_Shhy_Sp.Fields("ID")) Or Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount Then
                        DataGrid1.Enabled = False
                        Rs_Jc_Shhy_Sp.AddNew
                        Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount
                        Rs_Jc_Shhy_Sp.Fields("HTH") = Text1(0).Text
                        Rs_Jc_Shhy_Sp.MovePrevious
                        DataGrid1.Enabled = True
                    End If
                Case Else
                    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = False
                    Combo4.Visible = False
                    Combo5.Visible = False
            End Select
      

  4.   

    就是在DATAGRID上附加一个COMBO,使他大小、宽度等于单元格大小、宽度,而且可以移动
      

  5.   

    太多代码了!
                    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = True
                    Combo4.Visible = False
                    Combo5.Visible = False
    这几个控件有什么用呢?
    为什么在设置combo2的width top left 等。
    If IsNull(Rs_Jc_Shhy_Sp.Fields("ID")) Or Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount Then
                        DataGrid1.Enabled = False
                        Rs_Jc_Shhy_Sp.AddNew
                        Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount
                        Rs_Jc_Shhy_Sp.Fields("HTH") = Text1(0).Text
                        Rs_Jc_Shhy_Sp.MovePrevious
                        DataGrid1.Enabled = True
                    End If
    当IsNull(Rs_Jc_Shhy_Sp.Fields("ID"))  为空成立时,为什么记录集就要追加记录。
    Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount 这是什么意思呀?