BoldSignEasily embed eSignatures in your .NET applications. Free sandbox with native SDK available.
private void btnDeleteSelectedRow_Click(object sender, System.EventArgs e) { int rowIndex = gridDataBoundGrid1.CurrentCell.RowIndex; GridBoundRecordState rs = gridDataBoundGrid1.Binder.GetRecordStateAtRowIndex(rowIndex); if( rs.ListManager.Current is DataRowView ) { DataRowView drv = (DataRowView)rs.ListManager.Current; if( drv.Row is Dataset1.QuoteRow ) { drv.Row.Delete(); //find parent and close & open it int level = rs.LevelIndex; if(level == 0) gridDataBoundGrid1.Refresh(); else { int row = rowIndex - 1; while (row > this.gridDataBoundGrid1.Model.Rows.HeaderCount) { rs = gridDataBoundGrid1.Binder.GetRecordStateAtRowIndex(row); if(rs.LevelIndex < level) { this.gridDataBoundGrid1.BeginUpdate(); this.gridDataBoundGrid1.CollapseAtRowIndex(row); this.gridDataBoundGrid1.ExpandAtRowIndex(row); this.gridDataBoundGrid1.EndUpdate(); this.gridDataBoundGrid1.Refresh(); this.gridDataBoundGrid1.CurrentCell.MoveTo(rowIndex, 1); break; } row--; } } } } }Here is a forum reference on how to add child rows to an empty child table. http://www.syncfusion.com/Support/Forums/message.aspx?MessageID=13894 Here is a sample that shows hold you can insert/delete current rows at any level. updateableexpandgrid631958659068073824.zip
drv.Row.Delete();
this.grid.RefreshChildTableAtRowIndex(rowIndex);
We will look into adding such a method, but adding something that would ''auto respond'' to ListChanged event removing rows in this manner may not be appropriate in all situations. Just exposing the RefreshChildTableAtRowIndex would give you the option of calling it when it is needed.