windowsforms-devexpress-dot-xtradiagram-dot-diagramdatabindingcontrollerbase-b75456bb.md
Occurs when a property of the data object represented by a diagram item has changed its value.
Namespace : DevExpress.XtraDiagram
Assembly : DevExpress.XtraDiagram.v25.2.dll
NuGet Package : DevExpress.Win.Diagram
public event EventHandler<DiagramUpdateItemEventArgs> UpdateItem
Public Event UpdateItem As EventHandler(Of DiagramUpdateItemEventArgs)
The UpdateItem event's data class is DevExpress.XtraDiagram.DiagramUpdateItemEventArgs.
The DataObject event’s property returns the data object whose property has changed its value. The Item event’s property returns the diagram item associated with the data object.
The example below illustrates how to handle the UpdateItem event to bind DiagramOrgChartController to DataSet.
private void diagramOrgChartController1_UpdateItem(object sender, DevExpress.XtraDiagram.DiagramUpdateItemEventArgs e) {
var dataRow = e.DataObject as DataRowView;
var container = e.Item as DiagramContainer;
if (dataRow == null || container == null)
return;
foreach (var item in GetChildren(container)) {
var binding = item.Bindings.FirstOrDefault();
if (binding == null)
continue;
try {
if (item is DiagramShape && binding.PropertyName == "Content")
((DiagramShape)item).Content = dataRow[binding.Expression]?.ToString();
if (item is DiagramImage && binding.PropertyName == "Image")
((DiagramImage)item).Image = dataRow[binding.Expression];
}
catch (ArgumentException) {}
}
}
public IEnumerable<IDiagramItem> GetChildren(DiagramContainer container) {
foreach (var item in container.Items) {
yield return item;
var childContainer = item as DiagramContainer;
if (childContainer != null)
foreach (var childItem in GetChildren(childContainer))
yield return childItem;
}
}
Private Sub diagramOrgChartController1_UpdateItem(ByVal sender As Object, ByVal e As DevExpress.XtraDiagram.DiagramUpdateItemEventArgs)
Dim dataRow = TryCast(e.DataObject, DataRowView)
Dim container = TryCast(e.Item, DiagramContainer)
If dataRow Is Nothing OrElse container Is Nothing Then
Return
End If
For Each item In GetChildren(container)
Dim binding = item.Bindings.FirstOrDefault()
If binding Is Nothing Then
Continue For
End If
Try
If TypeOf item Is DiagramShape AndAlso binding.PropertyName = "Content" Then
CType(item, DiagramShape).Content = dataRow(binding.Expression)?.ToString()
End If
If TypeOf item Is DiagramImage AndAlso binding.PropertyName = "Image" Then
CType(item, DiagramImage).Image = dataRow(binding.Expression)
End If
Catch e1 As ArgumentException
End Try
Next item
End Sub
Public Iterator Function GetChildren(ByVal container As DiagramContainer) As IEnumerable(Of IDiagramItem)
For Each item In container.Items
Yield item
Dim childContainer = TryCast(item, DiagramContainer)
If childContainer IsNot Nothing Then
For Each childItem In GetChildren(childContainer)
Yield childItem
Next childItem
End If
Next item
End Function
See Also
DiagramDataBindingControllerBase Class