2014-02-09 31 views
0

我有一个带有组合框的datagridview,该组合框查找名为products的其他表,并使我能够选择产品。我还将datagridview标记设置为在价格列中查找相同的表“产品”。我希望能够通过从组合框中选择产品来自动填充价格单元格。问题是下面的代码将整个列更改为相同的价格。我只想要特定的行改变。组合框更新datagridview中的相邻单元

我在datagridview.cellvaluechanged事件上有以下代码。顺便说一下......我使用VB.net。请不要C#回答。

Dim price As Double = 0 


    price = Recipe_DetailsDataGridView.Tag 
    For Each column As DataRowView In Me.Recipe_DetailsBindingSource.List 
     column!price = price 

    Next 

回答

0

鉴于您正在循环所有行,您为什么惊讶所有行都会更改?如果您只想更改一行,则只需更改一行,而不涉及循环。您正在使用的事件应该为您提供行索引,以便您可以从同一行中的相应列中获取单元格,或者可以获取绑定项目并设置相应的字段。

顺便说一句,当它代表一行时,命名该循环控制变量'列'是否真的有意义?

+0

我不知道。这就是为什么我要问专家。我在其他地方看到了这个代码。我确实尝试使用一种方法,但没有奏效。我对此很新。大约一个月前开始编写代码。谢谢。 – user3289299

+0

正如我所说的,您正在使用的事件提供了行索引。首先要做的是阅读有关该事件。一旦你有行索引,你可以得到该行。一旦你有了这个行,你就可以得到所需列中的单元格并设置其值或获取DataBoundItem并直接修改它。 – jmcilhinney

+0

没有成功。花了数小时试图找出如何做到这一点。我想我必须阅读更多书籍。尽管如此,一个例子会很有帮助。 – user3289299

0

这就是我所拥有的。我有一个模糊的想法,并能够完成一个消息框来显示行索引。

昏暗的指数作为整数

For i = 0 To Recipe_DetailsDataGridView.SelectedCells.Count - 1 

     index = Recipe_DetailsDataGridView.SelectedCells.Item(i).RowIndex 
     MsgBox(index, ,) 
0

做到了!我的第一句话是从一个旧的VBA项目中得到它们,并简单地按照.net 的方式实现它。最后一行现在只是我的头脑。

昏暗的指数作为整数

For i = 0 To Recipe_DetailsDataGridView.SelectedCells.Count - 1 

     index = Recipe_DetailsDataGridView.SelectedCells.Item(i).RowIndex 
     Recipe_DetailsDataGridView.CurrentRow.Cells(2).Value = Recipe_DetailsDataGridView.Tag 
相关问题