2014-02-09 29 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 
相關問題