发新话题
打印

求助

求助

上次Nothing说不能在DataGrid中加入其他控件,其实是可以的,只要重写DataGridTableStyle下的DataGridTextBoxColumn就可以加入ComboBox等的控件了,但我实现了以后不能把ComboBox上修改的数据提交到DataGrid的网格上,代码如下:
   Dim da As New DataTable
    Dim cbb As New ComboBox
  Private Function CreaTable() As DataTable
        da.Columns.Add("货物代号", GetType(String))
        da.Columns.Add("名称/规格", GetType(String))
        da.Columns.Add("数量", GetType(Single))
        da.Columns.Add("供应商", GetType(String))
        da.Columns.Add("采购日期", GetType(DateTime))
        da.Columns.Add("交货日期", GetType(DateTime))
        Return da
    End Function

Private Sub BuyList_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ts As New DataGridTableStyle
        Dim dgc As New DataGridComboBoxColumn
        Dim dgt1 As New DataGridTextBoxColumn
        Dim dgt2 As New DataGridTextBoxColumn
        Dim dgt3 As New DataGridTextBoxColumn
        Dim dgt4 As New DataGridTextBoxColumn
        Dim dgt5 As New DataGridTextBoxColumn
        da = CreaTable()
        DataGrid1.DataSource = da
     ts.MappingName = da.TableName

        Dim gif As Object = New Object(2) {"sd", "sf", "sa"}
        cbb.Items.AddRange(gif)
        cbb.Cursor = Cursors.Arrow
        cbb.DropDownStyle = ComboBoxStyle.DropDownList
        cbb.Dock = DockStyle.Fill
        dgc.TextBox.Controls.Add(cbb)

        dgt1.HeaderText = da.Columns(0).ColumnName
        dgt1.MappingName = da.Columns(0).ColumnName
        ts.GridColumnStyles.Add(dgt1)
        DataGrid1.TableStyles.Add(ts)

        dgt2.HeaderText = da.Columns(1).ColumnName
        dgt2.MappingName = da.Columns(1).ColumnName
        ts.GridColumnStyles.Add(dgt2)
        DataGrid1.TableStyles.Add(ts)

        dgt3.HeaderText = da.Columns(2).ColumnName
        dgt3.MappingName = da.Columns(2).ColumnName
        ts.GridColumnStyles.Add(dgt3)
        DataGrid1.TableStyles.Add(ts)

        dgc.HeaderText = da.Columns(3).ColumnName
        dgc.MappingName = da.Columns(3).ColumnName
        ts.GridColumnStyles.Add(dgc)
        DataGrid1.TableStyles.Add(ts)
        
        dgt4.HeaderText = da.Columns(4).ColumnName
        dgt4.MappingName = da.Columns(4).ColumnName
        ts.GridColumnStyles.Add(dgt4)
        DataGrid1.TableStyles.Add(ts)

        dgt5.HeaderText = da.Columns(5).ColumnName
        dgt5.MappingName = da.Columns(5).ColumnName
        ts.GridColumnStyles.Add(dgt5)
        DataGrid1.TableStyles.Add(ts)

       End Sub


    Public Class DataGridComboBoxColumn
        Inherits DataGridTextBoxColumn
     End Class
求助各位帮我想个办法。

TOP

这和我说的一样,不是在DBGRID上加一个ComboBox控件吗?
其实在ComboBox改变时,可以将对应的内容写到相对应的DBGRID上的项目上就可以了。
换个头像,看见广告就眼红,直接封ID。

TOP

那要点做啊?我就不行,试好多方法都不能把内容写到DBGRID,就上面的代码不能做到你所说的,能我提供种方法吗?

TOP

你用.Net做的吧,我写个程序看看
换个头像,看见广告就眼红,直接封ID。

TOP

哦,麻烦了

TOP

找到了,在设DBGRID中的下下Column中的ColumnType设置成DataGridViewComboBoxColumn然后在Column中的Items属性设置要可选择的列就可以实现你要的功能。
换个头像,看见广告就眼红,直接封ID。

TOP

还不是很明白哦,那个ColumnType在那里设的,我在DataGrid中都找不到的,能说的详细点吗,最好有代码例子,麻烦了。

TOP

在DBGRID属性是设置。写代码我帮不了你,你自己慢慢找吧。

还有可能我们用的不是同一东西,我用的是VB2005,可能组件不一样。

如果没有的话,你只能在上面放一个ComboBox控件,当发生Chick事件后,用程序更改DBGrid中的内容。
换个头像,看见广告就眼红,直接封ID。

TOP

发新话题