我使用来自devExpress的网格来显示数据库中的一些数据,我还实现了RepositoryItemLookUp,因为我需要将列中的一些值看作下拉列表,下面是代码:
`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`下面是我所说的这张照片:

我想知道如何处理这个repositoryitemlookupedit,所以如果选择了什么,我可能会将另一列的值从N更改为D,就像我在图像中突出显示的那样。
也许我可以在我的appereance>格式条件部分写条件。
如果从这个存储库中选择了某项内容,那么无论我需要更改另一列值,我都会为此而挣扎,因为我以前从未使用过v.b,也没有使用过devexpress。
谢谢各位干杯!
在亚历克斯的帮助下

我在那里放置了一个断点,以检查什么是e.NewValue,我看到它是数据库中的实际ID,因为我选择了ID为1000097的MCI,当中断时,我捕捉到该Id,但末尾有“D”后缀。为什么会这样呢?
发布于 2017-05-28 19:37:25
您可以处理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栏)。
P.S.:我在代码中找不到的一件事是将它添加到GridView RepositoryItems集合中,这是使存储库项正常工作所必需的:
GridControl1.RepositoryItems.Add(riLookup)
https://stackoverflow.com/questions/44229069
复制相似问题