Example #1
0
        /// <summary>
        /// Inserts a new row into the collection at the specified location.
        /// </summary>
        public void InsertAt(DataRow row, int pos)
        {
            if (pos < 0)
            {
                throw new IndexOutOfRangeException("The row insert position " + pos + " is invalid.");
            }

            if (row == null)
            {
                throw new ArgumentNullException("row", "'row' argument cannot be null.");
            }

            if (row.Table != this.table)
            {
                throw new ArgumentException("This row already belongs to another table.");
            }

            // If row id is not -1, we know that it is in the collection.
            if (row.RowID != -1)
            {
                throw new ArgumentException("This row already belongs to this table.");
            }

            row.Validate();

            row.Table.ChangingDataRow(row, DataRowAction.Add);

            if (pos >= List.Count)
            {
                row.RowID = List.Count;
                List.Add(row);
            }
            else
            {
                List.Insert(pos, row);
                row.RowID = pos;
                for (int i = pos + 1; i < List.Count; i++)
                {
                    ((DataRow)List [i]).RowID = i;
                }
            }

            row.HasParentCollection = true;
            row.AttachRow();
            row.Table.ChangedDataRow(row, DataRowAction.Add);
        }
Example #2
0
        internal void AddInternal(DataRow row, DataRowAction action)
        {
            row.Table.ChangingDataRow(row, action);
            row.HasParentCollection = true;
            List.Add(row);
            // Set the row id.
            row.RowID = List.Count - 1;
            row.AttachRow();
#if NET_2_0
            if ((action & (DataRowAction.ChangeCurrentAndOriginal |
                           DataRowAction.ChangeOriginal)) != 0)
            {
                row.Original = row.Current;
            }
#endif
            row.Table.ChangedDataRow(row, action);
            if (row._rowChanged)
            {
                row._rowChanged = false;
            }
        }
		/// <summary>
		/// Inserts a new row into the collection at the specified location.
		/// </summary>
		public void InsertAt (DataRow row, int pos) 
		{
			if (pos < 0)
				throw new IndexOutOfRangeException ("The row insert position " + pos + " is invalid.");
			
			if (row == null)
				throw new ArgumentNullException("row", "'row' argument cannot be null.");
	
			if (row.Table != this.table)
				throw new ArgumentException ("This row already belongs to another table.");

			// If row id is not -1, we know that it is in the collection.
			if (row.RowID != -1)
				throw new ArgumentException ("This row already belongs to this table.");
			
			if ((table.DataSet == null || table.DataSet.EnforceConstraints) && !table._duringDataLoad)
				// we have to check that the new row doesn't colide with existing row
				ValidateDataRowInternal(row);
				
			row.Table.ChangingDataRow (row, DataRowAction.Add);

			if (pos >= List.Count) {
				row.RowID = List.Count;
				List.Add (row);
			}
			else {
				List.Insert (pos, row);
				row.RowID = pos;
				for (int i = pos+1; i < List.Count; i++) {
        	                        ((DataRow)List [i]).RowID = i;
	                        }
			}
				
			row.HasParentCollection = true;
			row.AttachRow ();
			row.Table.ChangedDataRow (row, DataRowAction.Add);
		}
		internal void AddInternal(DataRow row) {
			row.Table.ChangingDataRow (row, DataRowAction.Add);
			row.HasParentCollection = true;
			List.Add (row);
			// Set the row id.
			row.RowID = List.Count - 1;
			row.AttachRow ();
			row.Table.ChangedDataRow (row, DataRowAction.Add);
		}