2017-05-28 111 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,我真的不知道为什么?还有一次非常感谢,这似乎是一个解决方案! –