Back to Devexpress

DiagramDataBindingControllerBase.UpdateItem Event

windowsforms-devexpress-dot-xtradiagram-dot-diagramdatabindingcontrollerbase-b75456bb.md

latest4.6 KB
Original Source

DiagramDataBindingControllerBase.UpdateItem Event

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

Declaration

csharp
public event EventHandler<DiagramUpdateItemEventArgs> UpdateItem
vb
Public Event UpdateItem As EventHandler(Of DiagramUpdateItemEventArgs)

Event Data

The UpdateItem event's data class is DevExpress.XtraDiagram.DiagramUpdateItemEventArgs.

Remarks

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.

csharp
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;
            }
        }
vb
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

DiagramDataBindingControllerBase Members

DevExpress.XtraDiagram Namespace