System.Data.DataSet.MarkRelatedRowsAsModified C# (CSharp) Method

MarkRelatedRowsAsModified() private method

private MarkRelatedRowsAsModified ( TableChanges bitMatrix, DataRow row ) : void
bitMatrix TableChanges
row DataRow
return void
        private void MarkRelatedRowsAsModified(TableChanges[] bitMatrix, DataRow row)
        {
            DataRelationCollection relations = row.Table.ParentRelations;
            int relationCount = relations.Count;
            for (int relatedIndex = 0; relatedIndex < relationCount; ++relatedIndex)
            {
                DataRow[] relatedRows = row.GetParentRows(relations[relatedIndex], DataRowVersion.Current);

                foreach (DataRow relatedRow in relatedRows)
                {
                    int relatedTableIndex = Tables.IndexOf(relatedRow.Table);
                    int relatedRowIndex = relatedRow.Table.Rows.IndexOf(relatedRow);

                    if (!bitMatrix[relatedTableIndex][relatedRowIndex])
                    {
                        bitMatrix[relatedTableIndex][relatedRowIndex] = true;

                        if (DataRowState.Deleted != relatedRow.RowState)
                        {
                            // recurse into related rows
                            MarkRelatedRowsAsModified(bitMatrix, relatedRow);
                        }
                    }
                }
            }
        }