예제 #1
0
 internal void AddInternal(DataRow row, DataRowAction action)
 {
     row.Table.ChangingDataRow(row, action);
     List.Add(row);
     row.AttachAt(List.Count - 1, action);
     row.Table.ChangedDataRow(row, action);
     if (row._rowChanged)
     {
         row._rowChanged = false;
     }
 }
예제 #2
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)
            {
                pos = List.Count;
                List.Add(row);
            }
            else
            {
                List.Insert(pos, row);
                for (int i = pos + 1; i < List.Count; i++)
                {
                    ((DataRow)List [i]).RowID = i;
                }
            }

            row.AttachAt(pos, DataRowAction.Add);
            row.Table.ChangedDataRow(row, DataRowAction.Add);
        }
예제 #3
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) {
				pos = List.Count;
				List.Add (row);
			} else {
				List.Insert (pos, row);
				for (int i = pos+1; i < List.Count; i++)
					((DataRow) List [i]).RowID = i;
			}

			row.AttachAt (pos, DataRowAction.Add);
			row.Table.ChangedDataRow (row, DataRowAction.Add);
		}
예제 #4
0
		internal void AddInternal (DataRow row, DataRowAction action)
		{
			row.Table.ChangingDataRow (row, action);
			List.Add (row);
			row.AttachAt (List.Count - 1, action);
			row.Table.ChangedDataRow (row, action);
			if (row._rowChanged)
				row._rowChanged = false;
		}