public
object[] ItemArray
{
get
{
int defaultRecord = this.GetDefaultRecord();
object[]
array
=
new
object[this._columns.
Count
];
for
(int i = 0; i <
array
.Length; i++)
{
DataColumn dataColumn = this._columns[i];
array
[i] = dataColumn[defaultRecord];
}
return
array
;
}
set
{
if
(value == null)
{
throw
ExceptionBuilder.ArgumentNull(
"ItemArray"
);
}
if
(this._columns.
Count
< value.Length)
{
throw
ExceptionBuilder.ValueArrayLength();
}
DataColumnChangeEventArgs dataColumnChangeEventArgs = null;
if
(this._table.NeedColumnChangeEvents)
{
dataColumnChangeEventArgs =
new
DataColumnChangeEventArgs(this);
}
bool flag = this.BeginEditInternal();
for
(int i = 0; i < value.Length; i++)
{
if
(value[i] != null)
{
DataColumn dataColumn = this._columns[i];
if
(-1L != this.rowID && dataColumn.ReadOnly)
{
throw
ExceptionBuilder.ReadOnly(dataColumn.ColumnName);
}
if
(dataColumnChangeEventArgs != null)
{
dataColumnChangeEventArgs.InitializeColumnChangeEvent(dataColumn, value[i]);
this._table.OnColumnChanging(dataColumnChangeEventArgs);
}
if
(dataColumn.Table != this._table)
{
throw
ExceptionBuilder.ColumnNotInTheTable(dataColumn.ColumnName, this._table.TableName);
}
if
(-1L != this.rowID && dataColumn.ReadOnly)
{
throw
ExceptionBuilder.ReadOnly(dataColumn.ColumnName);
}
if
(this.tempRecord == -1)
{
this.BeginEditInternal();
}
object obj = (dataColumnChangeEventArgs != null) ? dataColumnChangeEventArgs.ProposedValue : value[i];
if
(obj == null)
{
if
(dataColumn.IsValueType)
{
throw
ExceptionBuilder.CannotSetToNull(dataColumn);
}
obj = DBNull.Value;
}
try
{
int proposedRecordNo = this.GetProposedRecordNo();
dataColumn[proposedRecordNo] = obj;
}
catch
(Exception e)
{
if
(ADP.IsCatchableOrSecurityExceptionType(e) && flag)
{
this.CancelEdit();
}
throw
;
}
this.LastChangedColumn = dataColumn;
if
(dataColumnChangeEventArgs != null)
{
this._table.OnColumnChanged(dataColumnChangeEventArgs);
}
}
}
this.EndEdit();
}
}