如何根据其他列更改另一列中的值 (v.b dev express)
How can I change value in another column based on some other column (v.b dev express)
我正在使用 devExpress 的 Grid 来显示数据库中的一些数据,我还实现了 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-> format condition 部分写条件。
如果从此存储库 itemlookupedit 中选择了某些内容,我需要更改其他列的值,无论我真的为此苦苦挣扎,因为我以前从未使用过 v.b 也没有 devexpress。
谢谢大家
干杯!
在亚历克斯的帮助下:
我在那里设置了一个断点来检查什么是 e.NewValue,我看到它实际上是来自数据库的 ID,因为我选择了 ID 为 1000097 的 MCI,当遇到断点时,我捕获了该 ID,但带有后缀 :"D" 最后..这是为什么?
您可以处理 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)
我正在使用 devExpress 的 Grid 来显示数据库中的一些数据,我还实现了 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-> format condition 部分写条件。
如果从此存储库 itemlookupedit 中选择了某些内容,我需要更改其他列的值,无论我真的为此苦苦挣扎,因为我以前从未使用过 v.b 也没有 devexpress。
谢谢大家 干杯!
在亚历克斯的帮助下:
我在那里设置了一个断点来检查什么是 e.NewValue,我看到它实际上是来自数据库的 ID,因为我选择了 ID 为 1000097 的 MCI,当遇到断点时,我捕获了该 ID,但带有后缀 :"D" 最后..这是为什么?
您可以处理 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)