添加一个下拉框到DataGrid

原创 2003年01月11日 09:59:00

本实例利用Paint方法添加一个下拉框到DataGrid1上

1、新建一个Visual Basic Project 。
2、添加一个DataGrid control到窗体上。
3、加入以下代码

 

Imports System.Data.SqlClient

 

Public Class Form1

    Inherits System.Windows.Forms.Form

 

#Region " Windows 窗体设计器生成的代码 "

 

    Public Sub New()

        MyBase.New()

 

        '该调用是 Windows 窗体设计器所必需的。

        InitializeComponent()

 

        '在 InitializeComponent() 调用之后添加任何初始化

 

    End Sub

 

    '窗体重写处置以清理组件列表。

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

        If disposing Then

            If Not (components Is Nothing) Then

                components.Dispose()

            End If

        End If

        MyBase.Dispose(disposing)

    End Sub

 

    'Windows 窗体设计器所必需的

    Private components As System.ComponentModel.IContainer

 

    '注意:以下过程是 Windows 窗体设计器所必需的

    '可以使用 Windows 窗体设计器修改此过程。

    '不要使用代码编辑器修改它。

    Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid

    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

        Me.DataGrid1 = New System.Windows.Forms.DataGrid()

        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()

        Me.SuspendLayout()

        '

        'DataGrid1

        '

        Me.DataGrid1.DataMember = ""

        Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText

        Me.DataGrid1.Location = New System.Drawing.Point(72, 56)

        Me.DataGrid1.Name = "DataGrid1"

        Me.DataGrid1.Size = New System.Drawing.Size(416, 184)

        Me.DataGrid1.TabIndex = 0

        '

        'Form1

        '

        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)

        Me.ClientSize = New System.Drawing.Size(552, 285)

        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.DataGrid1})

        Me.Name = "Form1"

        Me.Text = "Form1"

        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()

        Me.ResumeLayout(False)

 

    End Sub

 

#End Region

 

 

    Public MyCombo As New ComboBox()

    Dim con As New SqlConnection("server=lihg;uid=sa;pwd=sa;database=northwind")

    Dim daEmp As New SqlDataAdapter("Select * From Employees", con)

 

    Public ds As New DataSet()

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        AddHandler MyCombo.TextChanged, AddressOf Ctrls_TextChanged

        'Fill ComboBox list.

        MyCombo.Name = "MyCombo"

        MyCombo.Visible = False

        MyCombo.Items.Clear()

        MyCombo.Items.Add("Sales Representative")

        MyCombo.Items.Add("Inside Sales Coordinator")

        MyCombo.Items.Add("Vice President, Sales")

        MyCombo.Items.Add("Sales Manager")

        MyCombo.Items.Add("Flunky")

 

 

        daEmp.Fill(ds, "Employees")

 

        'Set the RowHeight of the DataGrid to the height of the ComboBox.

        DataGrid1.PreferredRowHeight = MyCombo.Height

 

        DataGrid1.DataSource = ds

 

        DataGrid1.DataMember = "Employees"

        'Add ComboBox to the Control collection of the DataGrid.

        DataGrid1.Controls.Add(MyCombo)

    End Sub

 

    Private Sub DataGrid1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGrid1.Paint

        If DataGrid1.CurrentCell.ColumnNumber = 3 Then

            MyCombo.Width = DataGrid1.GetCurrentCellBounds.Width

        End If

    End Sub

 

    Private Sub Ctrls_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)

        If DataGrid1.CurrentCell.ColumnNumber = 3 Then

            MyCombo.Visible = False

            If DataGrid1.Item(DataGrid1.CurrentCell) & "" = "" Then

                SendKeys.Send("*")

            End If

            DataGrid1.Item(DataGrid1.CurrentCell) = MyCombo.Text

        End If

    End Sub

 

    Private Sub DataGrid1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged

        If DataGrid1.CurrentCell.ColumnNumber = 3 Then

            MyCombo.Visible = False

            MyCombo.Width = 0

            MyCombo.Left = DataGrid1.GetCurrentCellBounds.Left

            MyCombo.Top = DataGrid1.GetCurrentCellBounds.Top

            MyCombo.Text = DataGrid1.Item(DataGrid1.CurrentCell) & ""

            MyCombo.Visible = True

        Else

            MyCombo.Visible = False

            MyCombo.Width = 0

        End If

    End Sub

 

    Private Sub DataGrid1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.Scroll

        MyCombo.Visible = False

        MyCombo.Width = 0

    End Sub

 

    Private Sub DataGrid1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.Click

        MyCombo.Visible = False

        MyCombo.Width = 0

    End Sub

 

 

End Class

4、修连接字符串Dim con As New SqlConnection("server=lihg;uid=sa;pwd=sa;database=northwind"),使能连接上数据库
5、F5运行

 

 

easyui datagrid单元格添加下拉框

今天项目需求,需要在datagrid
  • kabuqinuo229891
  • kabuqinuo229891
  • 2014年08月25日 20:36
  • 6982

在DataGrid中使用下拉列表ComboBox控件

在使用Microsoft.Net Framework环境下编写数据库方面的软件时,经常要用到DataGrid数据显示控件,但同时也发现,DataGrid提供的网格显示中,只有两种:一种是普通的Text...
  • chenguang79
  • chenguang79
  • 2006年03月24日 10:55
  • 2266

easyui datagrid combobox下拉框获取数据问题

最近在使用easyui的datagrid,在可编辑表格中添加一个下拉框,查了下API,可以设置type : 'combobox',来做下拉框,这下拉框是有了,可是这后台数据怎么传过来呢,api上...
  • pcxbest
  • pcxbest
  • 2014年02月20日 21:08
  • 37667

DataGrid添加下拉列表框

本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。   1. 在DataGrid中加入ComboBox列;  2. 把在...
  • shulei521
  • shulei521
  • 2007年10月03日 18:41
  • 345

DataGrid添加CheckBox(下拉列表)

DataGrid中如何添加下拉列表呢?如下是实现的代码: DataGrid中的列 view plaincopy to clipboardprint? mx:DataGri...
  • feilongjian001
  • feilongjian001
  • 2011年11月02日 12:02
  • 2228

EasyUI-DataGrid编辑时出现下拉列表框选择,同时修改其它列的值

首先是进行表格式的初始化,主要是为了可以进行编辑//初始化表格 $.extend($.fn.datagrid.methods, { editCell: function (jq, param)...
  • u013493957
  • u013493957
  • 2015年01月09日 10:26
  • 5320

datagrid中添加下拉框combobox

js:function initDataEditDg() { var _KKXMItems = [{ "FYLXID": 0, "FYLXMC": "现金" }, { ...
  • zhang_kang_user
  • zhang_kang_user
  • 2017年11月01日 10:19
  • 171

在DataGrid中简单使用下拉列表框

 在DataGrid中简单使用下拉列表框作者:Tushar Ameta翻译:秋枫在DataGrid中使用下拉列表问题。这篇文章讲了如何在 System.Windows.Forms.DataGrid中切...
  • chenyu001
  • chenyu001
  • 2004年06月11日 10:27
  • 954

datagrid添加下拉列表框

  • 2010年01月27日 11:21
  • 32KB
  • 下载

添加一个下拉框到DataGrid

http://blog.csdn.net/xwqjamky/archive/2005/10/17/508011.aspx其中:Private Sub Ctrls_TextChanged(ByVal s...
  • njtmcpm
  • njtmcpm
  • 2005年12月21日 10:55
  • 588
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:添加一个下拉框到DataGrid
举报原因:
原因补充:

(最多只允许输入30个字)