DataGridViewComboBox
上有几个帖子,但他们没有涵盖这个具体案例。
我有一个鞋子计费表格中的DGV,前三列是组合框。第一,对于模型;第二,对于Color;第三,对于Number。
因为我希望人们只在CellValueChanged
中出售库存中的东西;取决于ColumnIndex
我清除下一个组合并插入相应的项目。简单的例子,我有" Nike Pegassus"在第一个组合中,我选择" Green"在第二个,我选择该模型和颜色的所有可用数字,并在我清除其中的项目之后将其插入第三列,以防选择了另一种颜色。这是代码的一部分
If e.RowIndex >= 0 Then
If e.ColumnIndex = 0 Then
Dim objColumna As DataGridViewComboBoxColumn = dtgDetalle.Columns(1)
Dim colItems As New Collection
Dim Dattabla As DataTable
Dim objColor As New clsColor(objObjeto.Sesion)
Dattabla = objColor.BuscarTodos("CodColor IN (select distinct Stock.CodColor from Stock inner join Color on Stock.CodColor = Color.CodColor where Stock.Cantidad > 0 AND Stock.CodModelo=" & CType(objColumna.Items(dtgDetalle.Rows(e.RowIndex).Cells(0).Value), clsElementoListaFactura).Codigo & ")")
objColor = Nothing
objColumna = dtgDetalle.Columns(1)
objColumna.Items.Clear()
dtgDetalle.Rows(e.RowIndex).Cells(1).Value = Nothing
dtgDetalle.Rows(e.RowIndex).Cells(2).Value = Nothing
For Each darRecord In Dattabla.Rows
objColor = New clsColor(objObjeto.Sesion)
objColor.Codigo = darRecord.item("CodColor").ToString
Dim objElemento As New clsElementoListaFactura(darRecord.item("Color").ToString, objColumna.Items.Count, "C", CInt(darRecord.item("CodColor").ToString), "1")
objColumna.Items.Add(objElemento)
objColor = Nothing
Next
objColumna.ValueMember = "ItemData"
objColumna.DisplayMember = "Name"
. . . . . .
这只适用于一行! 当我进入第2行并更改第一个组合的索引时,我只想改变Combos(1,1)和(1,2),但我也得到(0,1)和(0,2) )清除并插入新值。 清除列中特定行的项目,然后仅在该单元格中插入项目的最佳方法是什么? 如果我不清楚,请询问。这真的开始变得痛苦。 谢谢!