2017-05-28 52 views
0

我正在使用來自devExpress的網格顯示數據庫中的一些數據,我還實現了RepositoryItemLookUp,因爲我需要在列中看到一些值作爲下拉列表這裏是代碼:如何更改另一列中的值,基於其他列(vb dev express)

`Dim riLookup As New RepositoryItemLookUpEdit() 

riLookup.NullText = String.Empty 

DataTableDobTableAdapter.FillDob(Me.DsOrders.DataTableDob) 

riLookup.DataSource = Me.DsOrders.DataTableDob 

riLookup.ValueMember = "ID" 
riLookup.DisplayMember = "TITLE" 
riLookup.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup 

GridView1.Columns("Code").ColumnEdit = riLookup` 

這裏是一個我所談論的照片:enter image description here

我不知道我該怎麼處理這repositoryitemlookupedit因此,如果無論是choosen那裏我可能會改變值另一列從N到D,如我在圖像中突出顯示的那樣。

也許我可以在我的appereance->格式條件部分寫條件。

無論我需要改變另一列的值,如果從這個repositoryitemlookupedit選擇的東西,無論我真的在掙扎,因爲我從來沒有在v.b之前使用devexpress。

Thanks guys guys 乾杯!

後ALEX HELP: enter image description here

我把一個斷點檢查什麼是e.NewValue,我看到它是acctually從數據庫ID,因爲我選用MCI擁有ID 1000097當breakpoing hitted我趕上該ID,但後綴:「D」在結束..爲什麼呢?

+0

你可以處理[RepositoryItemLookupEdit.EditValueChanging](https://documentation.devexpress.com/#WindowsForms/DevExpressXtraEditorsRepositoryRepositoryItem_EditValueChangingtopic)事件並在其中設置其他列的值。 –

+0

@AlexB。你能提供一個簡單的例子來看看,我試圖寫事件處理程序,但不幸的是我不能。 –

+0

帶'N'或'D'的列是綁定還是未綁定? –

回答

1

您可以處理RepositoryItemLookupEdit.EditValueChanging事件。

只需添加一個事件處理現有代碼:

Dim riLookup As New RepositoryItemLookUpEdit() 

    riLookup.NullText = String.Empty 

    DataTableDobTableAdapter.FillDob(Me.DsOrders.DataTableDob) 

    riLookup.DataSource = Me.DsOrders.DataTableDob 

    riLookup.ValueMember = "ID" 
    riLookup.DisplayMember = "TITLE" 
    riLookup.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup 

    GridView1.Columns("Code").ColumnEdit = riLookup 
    'Add this line: 
    AddHandler riLookup.EditValueChanging, AddressOf repItem_EditValueChanging 

現在只需處理該事件,並做你的邏輯來設置「N/d」列:

Private Sub repItem_EditValueChanging(sender As Object, e As ChangingEventArgs) 
     If e.NewValue > -1 Then 'any ID given => "N" 
      GridView1.SetRowCellValue(GridView1.FocusedRowHandle, GridView1.Columns(6), "D") 
     Else 
      GridView1.SetRowCellValue(GridView1.FocusedRowHandle, GridView1.Columns(6), "N") 
     End If 
    End Sub 

(我假設第6列從你的屏幕截圖)。

PS:我couldn't在代碼中找到,但其中有一點是時,只需要得到一個存儲庫項目的正常工作是將它添加到你的GridView RepositoryItems集合,如:

GridControl1.RepositoryItems.Add(riLookup)

+0

如果從RepositoryItemLookup/dropdown中選擇了一些內容,我需要將值從「N」更改爲「D」,因此我可以以某種方式檢查是否從下拉列表中選擇了任何內容,如果是,那麼將我的列的值從N-> D更改?我可以使用哪種情況而不是e.NewValue = 1?並感謝您的幫助 –

+0

如果e.NewValue> 0,您是否嘗試過? –

+0

檢查編輯伴侶(我不知道爲什麼是那個sufix「D」那裏),每個單獨的e.NewValue都有id號碼+ D,我真的不知道爲什麼?還有一次非常感謝,這似乎是一個解決方案! –