RepositoryLookUpEdit 在网格控件(页脚)上显示
RepositoryLookUpEdit display meber show on grid control (footer)
我有一个包含三列的网格控件,其中一列是 lookUpEdit 控件。在我显示其 value 成员 的单元格中,这工作正常。但我还想显示 显示成员 到页脚网格控件,例如信息文本。
如果我在我的控件 RepositoryLookUpEdit 中选择不同的值,那么我想将其相应的文本值 (displayMember) 显示到网格控件的页脚。我的代码是这样的:
Dim edit As RepositoryItemLookUpEdit = New RepositoryItemLookUpEdit
edit.DataSource = ds.Tables(0)
edit.DisplayMember = ds.Tables(0).Columns("KONTOSIFRA").Caption.ToString
edit.ValueMember = ds.Tables(0).Columns("KONTOSIFRA").Caption.ToString
edit.SearchMode = SearchMode.AutoFilter
' ds.Tables(0).Columns("KONTONAZIV").Caption.ToString ' This is what I want to show (display member)
dgvControl.RepositoryItems.Add((edit))
With dgView
.Columns(1).Name = "KONTOSIFRA"
.Columns(1).FieldName = "KONTOSIFRA"
.Columns(1).Caption = "KONTO"
.Columns(1).ColumnEdit = edit
.Columns(1).DisplayFormat.FormatType = FormatType.Numeric
.Columns(1).DisplayFormat.FormatString = "n"
.Columns(1).OptionsColumn.AllowEdit = True
.Columns(1).SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Custom
.Columns(1).SummaryItem.DisplayFormat = ' Here I need to insert display member...?
Dim test As System.Data.DataRowView
test = edit.Properties.GetRowByKeyValue(edit.EditValue)
.Columns(1).SummaryItem.DisplayFormat = test.Item(1).ToString ' This works for gridLookUpEdit control, but my control is RepositoryLookUpEdit. How do I the same thing, only for my control?
End With
使用类似于:
.Columns(1).SummaryItem.DisplayFormat = "MyCustValue"
由于您已将 SummaryType
设置为 Custom
,您需要处理 CustomSummaryCalculate
事件。
在这个活动中你这样做:
if (e.SummaryProcess == CustomSummaryProcess.Finalize) {
var item = e.Item as GridColumnSummaryItem;
if (item.FieldName == "KONTOSIFRA") {
e.TotalValue = "blahblah";
}
}
您可以使用 RepositoryItemLookUpEdit.GetDisplayValueByKeyValue
method to get the display member from known value member. And you need to handle GridView.CustomSummaryCalculate
事件。
这是示例:
Private values As List(Of String)
Private Sub dgView_CustomSummaryCalculate(sender As Object, e As CustomSummaryEventArgs) Handles gridView1.CustomSummaryCalculate
If Not e.IsTotalSummary Then
Exit Sub
End If
Const fieldName$ = "KONTOSIFRA"
Dim summaryItem As GridSummaryItem = TryCast(e.Item, GridSummaryItem)
If summaryItem Is Nothing AndAlso summaryItem.FieldName <> fieldName$ Then
Exit Sub
End If
Select Case e.SummaryProcess
Case CustomSummaryProcess.Start
values = New List(Of String)
Case CustomSummaryProcess.Calculate
Dim edit As RepositoryItemLookUpEdit = DirectCast(dgView.Columns(fieldName$).ColumnEdit, RepositoryItemLookUpEdit)
Dim value As Object = edit.GetDisplayValueByKeyValue(e.FieldValue)
If Not IsNothing(value) Then
values.Add(value)
End If
Case CustomSummaryProcess.Finalize
If values.Count > 0 Then
e.TotalValue = String.Join(", ", values.Distinct())
End If
End Select
End Sub
我有一个包含三列的网格控件,其中一列是 lookUpEdit 控件。在我显示其 value 成员 的单元格中,这工作正常。但我还想显示 显示成员 到页脚网格控件,例如信息文本。
如果我在我的控件 RepositoryLookUpEdit 中选择不同的值,那么我想将其相应的文本值 (displayMember) 显示到网格控件的页脚。我的代码是这样的:
Dim edit As RepositoryItemLookUpEdit = New RepositoryItemLookUpEdit
edit.DataSource = ds.Tables(0)
edit.DisplayMember = ds.Tables(0).Columns("KONTOSIFRA").Caption.ToString
edit.ValueMember = ds.Tables(0).Columns("KONTOSIFRA").Caption.ToString
edit.SearchMode = SearchMode.AutoFilter
' ds.Tables(0).Columns("KONTONAZIV").Caption.ToString ' This is what I want to show (display member)
dgvControl.RepositoryItems.Add((edit))
With dgView
.Columns(1).Name = "KONTOSIFRA"
.Columns(1).FieldName = "KONTOSIFRA"
.Columns(1).Caption = "KONTO"
.Columns(1).ColumnEdit = edit
.Columns(1).DisplayFormat.FormatType = FormatType.Numeric
.Columns(1).DisplayFormat.FormatString = "n"
.Columns(1).OptionsColumn.AllowEdit = True
.Columns(1).SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Custom
.Columns(1).SummaryItem.DisplayFormat = ' Here I need to insert display member...?
Dim test As System.Data.DataRowView
test = edit.Properties.GetRowByKeyValue(edit.EditValue)
.Columns(1).SummaryItem.DisplayFormat = test.Item(1).ToString ' This works for gridLookUpEdit control, but my control is RepositoryLookUpEdit. How do I the same thing, only for my control?
End With
使用类似于:
.Columns(1).SummaryItem.DisplayFormat = "MyCustValue"
由于您已将 SummaryType
设置为 Custom
,您需要处理 CustomSummaryCalculate
事件。
在这个活动中你这样做:
if (e.SummaryProcess == CustomSummaryProcess.Finalize) {
var item = e.Item as GridColumnSummaryItem;
if (item.FieldName == "KONTOSIFRA") {
e.TotalValue = "blahblah";
}
}
您可以使用 RepositoryItemLookUpEdit.GetDisplayValueByKeyValue
method to get the display member from known value member. And you need to handle GridView.CustomSummaryCalculate
事件。
这是示例:
Private values As List(Of String)
Private Sub dgView_CustomSummaryCalculate(sender As Object, e As CustomSummaryEventArgs) Handles gridView1.CustomSummaryCalculate
If Not e.IsTotalSummary Then
Exit Sub
End If
Const fieldName$ = "KONTOSIFRA"
Dim summaryItem As GridSummaryItem = TryCast(e.Item, GridSummaryItem)
If summaryItem Is Nothing AndAlso summaryItem.FieldName <> fieldName$ Then
Exit Sub
End If
Select Case e.SummaryProcess
Case CustomSummaryProcess.Start
values = New List(Of String)
Case CustomSummaryProcess.Calculate
Dim edit As RepositoryItemLookUpEdit = DirectCast(dgView.Columns(fieldName$).ColumnEdit, RepositoryItemLookUpEdit)
Dim value As Object = edit.GetDisplayValueByKeyValue(e.FieldValue)
If Not IsNothing(value) Then
values.Add(value)
End If
Case CustomSummaryProcess.Finalize
If values.Count > 0 Then
e.TotalValue = String.Join(", ", values.Distinct())
End If
End Select
End Sub