The InitializingDetailGrid event is raised for each DataRow about to be added to the main grid or one of the detail grids to initialize its detail grid(s).
To subscribe to the InitializingDetailGrid event, the following steps must be performed:
Obtain a reference to a GridControl or DetailGrid object.
Subscribe to the InitializingDetailGrid event of the GridControl or DetailGrid object using the InitializingDetailGridEventHandler delegate class.
Create a new method that will handle the events that are raised.
Place the desired code in the newly created event handler.
To subscribe to the InitializingDetailGrid event, the following steps must be performed:
Obtain a reference to a GridControl or DetailGrid object.
Subscribe to the InitializingDetailGrid event of the GridControl or DetailGrid object using the AddHandler/AddressOf keywords.
Create a new method that will handle the events that are raised.
Place the desired code in the newly created event handler.
The following example demonstrates how to use the InitializingDetailGrid event to populate the contents of a detail grid according to the values of its parent DataRow.
VB.NET |
Copy Code |
---|---|
Dim grid As New GridControl() grid.BeginInit() Me.Controls.Add( grid ) grid.Dock = DockStyle.Fill grid.FixedHeaderRows.Add( New ColumnManagerRow() ) ' Populate the main grid with data. For the purposes of this example ' we will only add 2 DataRows to the main grid. grid.Columns.Add( New Column( "FirstName", GetType( string ) ) ) grid.Columns.Add( New Column( "LastName", GetType( string ) ) ) grid.Columns.Add( New Column( "FamilyID", GetType( integer ) ) ) grid.Columns.Add( New Column( "Occupation", GetType( string ) ) ) Dim row1 As Xceed.Grid.DataRow = grid.DataRows.AddNew() row1.Cells( "FirstName" ).Value = "Peter" row1.Cells( "LastName" ).Value = "Griffin" row1.Cells( "FamilyID" ).Value = 1 row1.Cells( "Occupation" ).Value = "Fisherman" row1.EndEdit() Dim row2 As Xceed.Grid.DataRow = grid.DataRows.AddNew() row2.Cells( "FirstName" ).Value = "Homer" row2.Cells( "LastName" ).Value = "Simpson" row2.Cells( "FamilyID" ).Value = 2 row2.Cells( "Occupation" ).Value = "Nuclear Technician" row2.EndEdit() ' Create the detail grid that will contain our detail data. Dim detail As New DetailGrid() detail.HeaderRows.Add( New ColumnManagerRow() ) ' Add the columns to our detail grid detail.Columns.Add( New Column( "FirstName", GetType( string ) ) ) detail.Columns.Add( New Column( "Relationship", GetType( string ) ) ) detail.Columns.Add( New Column( "FamilyID", GetType( integer ) ) ) ' Add our detail grid to the main grid's collection of DetailGridTemplates. grid.DetailGridTemplates.Add( detail ) ' Subscribe to the InitializingNewDetailGrid event so we can provide ' detail data to our detail grids according to the values of their ' parent DataRows. AddHandler grid.InitializingDetailGrid, AddressOf Me.init_details grid.EndInit() ' Fill our detail grids with data! Private Sub init_details( ByVal sender As object, ByVal e As InitializingDetailGridEventArgs ) Select Case CType( e.Grid.ParentDataRow.Cells( "FamilyID" ).Value, Integer ) Case 1: Dim row1 As Xceed.Grid.DataRow = e.Grid.DataRows.AddNew() row1.Cells( "FirstName" ).Value = "Lois" row1.Cells( "Relationship" ).Value = "Wife" row1.Cells( "FamilyID" ).Value = 1 row1.EndEdit() Dim row2 As Xceed.Grid.DataRow = e.Grid.DataRows.AddNew() row2.Cells( "FirstName" ).Value = "Meg" row2.Cells( "Relationship" ).Value = "Daughter" row2.Cells( "FamilyID" ).Value = 1 row2.EndEdit() Dim row3 As Xceed.Grid.DataRow = e.Grid.DataRows.AddNew() row3.Cells( "FirstName" ).Value = "Chris" row3.Cells( "Relationship" ).Value = "Son" row3.Cells( "FamilyID" ).Value = 1 row3.EndEdit() ' ...; Case 2: Dim row1 As Xceed.Grid.DataRow = e.Grid.DataRows.AddNew() row1.Cells( "FirstName" ).Value = "Marge" row1.Cells( "Relationship" ).Value = "Wife" row1.Cells( "FamilyID" ).Value = 2 row1.EndEdit() Dim row2 As Xceed.Grid.DataRow = e.Grid.DataRows.AddNew() row2.Cells( "FirstName" ).Value = "Bart" row2.Cells( "Relationship" ).Value = "Son" row2.Cells( "FamilyID" ).Value = 2 row2.EndEdit() ' ... End Select End Sub |
C# |
Copy Code |
---|---|
GridControl grid = new GridControl(); grid.BeginInit(); this.Controls.Add( grid ); grid.Dock = DockStyle.Fill; grid.FixedHeaderRows.Add( new ColumnManagerRow() ); // Populate the main grid with data. For the purposes of this example // we will only add 2 DataRows to the main grid. grid.Columns.Add( new Column( "FirstName", typeof( string ) ) ); grid.Columns.Add( new Column( "LastName", typeof( string ) ) ); grid.Columns.Add( new Column( "FamilyID", typeof( int ) ) ); grid.Columns.Add( new Column( "Occupation", typeof( string ) ) ); Xceed.Grid.DataRow row1 = grid.DataRows.AddNew(); row1.Cells[ "FirstName" ].Value = "Peter"; row1.Cells[ "LastName" ].Value = "Griffin"; row1.Cells[ "FamilyID" ].Value = 1; row1.Cells[ "Occupation" ].Value = "Fisherman"; row1.EndEdit(); Xceed.Grid.DataRow row2 = grid.DataRows.AddNew(); row2.Cells[ "FirstName" ].Value = "Homer"; row2.Cells[ "LastName" ].Value = "Simpson"; row2.Cells[ "FamilyID" ].Value = 2; row2.Cells[ "Occupation" ].Value = "Nuclear Technician"; row2.EndEdit(); // Create the detail grid that will contain our detail data. DetailGrid detail = new DetailGrid(); detail.HeaderRows.Add( new ColumnManagerRow() ); // Add the columns to our detail grid detail.Columns.Add( new Column( "FirstName", typeof( string ) ) ); detail.Columns.Add( new Column( "Relationship", typeof( string ) ) ); detail.Columns.Add( new Column( "FamilyID", typeof( int ) ) ); // Add our detail grid to the main grid's collection of DetailGridTemplates. grid.DetailGridTemplates.Add( detail ); // Subscribe to the InitializingNewDetailGrid event so we can provide // detail data to our detail grids according to the values of their // parent DataRows. grid.InitializingDetailGrid += new InitializingDetailGridEventHandler( this.init_details ); grid.EndInit(); // Fill our detail grids with data! private void init_details( object sender, InitializingDetailGridEventArgs e ) { switch( ( int )e.Grid.ParentDataRow.Cells[ "FamilyID" ].Value ) { case 1: { Xceed.Grid.DataRow row1 = e.Grid.DataRows.AddNew(); row1.Cells[ "FirstName" ].Value = "Lois"; row1.Cells[ "Relationship" ].Value = "Wife"; row1.Cells[ "FamilyID" ].Value = 1; row1.EndEdit(); Xceed.Grid.DataRow row2 = e.Grid.DataRows.AddNew(); row2.Cells[ "FirstName" ].Value = "Meg"; row2.Cells[ "Relationship" ].Value = "Daughter"; row2.Cells[ "FamilyID" ].Value = 1; row2.EndEdit(); Xceed.Grid.DataRow row3 = e.Grid.DataRows.AddNew(); row3.Cells[ "FirstName" ].Value = "Chris"; row3.Cells[ "Relationship" ].Value = "Son"; row3.Cells[ "FamilyID" ].Value = 1; row3.EndEdit(); // ... break; } case 2: { Xceed.Grid.DataRow row1 = e.Grid.DataRows.AddNew(); row1.Cells[ "FirstName" ].Value = "Marge"; row1.Cells[ "Relationship" ].Value = "Wife"; row1.Cells[ "FamilyID" ].Value = 2; row1.EndEdit(); Xceed.Grid.DataRow row2 = e.Grid.DataRows.AddNew(); row2.Cells[ "FirstName" ].Value = "Bart"; row2.Cells[ "Relationship" ].Value = "Son"; row2.Cells[ "FamilyID" ].Value = 2; row2.EndEdit(); // ... break; } } } |