Vs2005中DataGridView点到单元格时出现下拉列表框


Vs2005中DataGridView点到单元格时出现下拉列表框
图1
 

图2

具体方法如下:
第一:
先在窗体设计时拖一个ComBoBox控件,然后在里面的ITEMS设好你要下拉项 :
根据前一个单元格(j_row:表中当前的行)的物料编号从数据库中自动ITEMS填充,物料规格需要涉及两个数据库,一个是主数据库:货品目录中的(存储物料编码的);一个是货品规格里专门存储规格的标。
Private Sub rk_xz_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rk_xz.SelectedIndexChanged
        If yes = True Then
            strsql = "select * from 货品规格 where  编号='" & str & "'and 规格型号='" & rk_xz.Text & "'"
            Dim my_Reader As SqlDataReader
            my_Reader = execAdapter(strsql)
            If my_Reader.Read() Then
                dgv_rk.Item(2, j_row).Value = banjiao(rk_xz.Text)
                dgv_rk.Item(5, j_row).Value = my_Reader.Item("单位").ToString
                dgv_rk.Item(10, j_row).Value = my_Reader.Item("库存").ToString
                dgv_rk.Item(7, j_row).Value = my_Reader.Item("单价").ToString
                dgv_rk.Item(12, j_row).Value = True
                cn.Close()
                my_Reader.Dispose()
            Else
                cn.Close()
                my_Reader.Dispose()
                strsql = "select * from 货品目录 where  编号='" & str & "'"
                Dim myReader As SqlDataReader
                myReader = execAdapter(strsql)
                If myReader.Read() Then
                    dgv_rk.Item(2, j_row).Value = banjiao(rk_xz.Text)
                    dgv_rk.Item(5, j_row).Value = myReader.Item("单位").ToString
                    dgv_rk.Item(10, j_row).Value = myReader.Item("当前库存").ToString
                    dgv_rk.Item(6, j_row).Value = myReader.Item("入库价格").ToString
                    dgv_rk.Item(12, j_row).Value = False
                    cn.Close()
                    myReader.Dispose()
                End If
            End If
        End If
    End Sub

第二:
在窗体的Load方法中加入:dgv_rk.Controls.Add(g_ComBoBox);也就是把ComBoBox控件添加到DataGridView控件中:
dgv_rk.Controls.Add(rk_xz)
加入dgv_rk其他事件也可:
 Private Sub dgv_rk_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_rk.CellValidated

dgv_rk.Controls.Add(rk_xz)

end sub
第三:(关键代码)
在DataGridView控件的CurrentCellChanged方法中写如下代码:
 Private Sub dgv_rk_CurrentCellChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgv_rk.CurrentCellChanged
        Dim CurrnetCell As DataGridViewCell = dgv_rk.CurrentCell
        Try
            If CurrnetCell.ToString() <> "" And CurrnetCell.OwningColumn.Name = "规格" Then
             Dim TmpRect As Rectangle = dgv_rk.GetCellDisplayRectangle(CurrnetCell.ColumnIndex, CurrnetCell.RowIndex, True)
                rk_xz.Size = TmpRect.Size
                rk_xz.Top = TmpRect.Top
                rk_xz.Left = TmpRect.Left
                rk_xz.Visible = True
            Else
                rk_xz.Visible = False
            End If
        Catch ex As Exception
       End Try
End Sub
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值