C# DataRow.ItemArray 属性
2023-09-14 09:03:15 时间
通过一个数组来获取或设置此行的所有值。
命名空间:System.Data
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; 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; 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(); }
命名空间:System.Data
程序集:System.Data(在 system.data.dll 中)
代码示例:
private void CreateRowsWithItemArray() // Make a DataTable using the function below. DataTable dt = MakeTableWithAutoIncrement(); DataRow relation; // Declare the array variable. object [] rowArray = new object[2]; // Create 10 new rows and add to DataRowCollection. for(int i = 0; i i++) rowArray[0]=null; rowArray[1]= "item " + i; relation = dt.NewRow(); relation.ItemArray = rowArray; dt.Rows.Add(relation); PrintTable(dt); private DataTable MakeTableWithAutoIncrement() // Make a table with one AutoIncrement column. DataTable table = new DataTable("table"); DataColumn idColumn = new DataColumn("id", Type.GetType("System.Int32")); idColumn.AutoIncrement = true; idColumn.AutoIncrementSeed = 10; table.Columns.Add(idColumn); DataColumn firstNameColumn = new DataColumn("Item", Type.GetType("System.String")); table.Columns.Add(firstNameColumn); return table; private void PrintTable(DataTable table) foreach(DataRow row in table.Rows) foreach(DataColumn column in table.Columns) Console.WriteLine(row[column]); }异常:
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; 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; 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(); }
相关文章
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- C#11 新特性整理
- C#区域医疗云LIS系统源码
- dotnet C# 基于 INotifyPropertyChanged 实现一个 CLR 属性绑定辅助类
- 从C#方法表看透方法调用的本质
- C#中事件处理的个人体会
- C#自动创建数据库实现代码
- C#数据绑定控件中的DataSource属性浅谈
- C#简单的加密类实例
- c#深拷贝与浅拷贝的区别分析及实例
- 深入理解C#索引器(一种支持参数的属性)与属性的对比
- c#Rank属性与GetUpperBound方法的深入分析
- 浅析c#中如何在form的webbrowser控件中获得鼠标坐标
- C#通过XML节点属性/属性值读取写入XML操作代码实例
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- C#memcached缓存使用实例代码
- C#中属性和成员变量的区别说明
- C#List<T>Contains<T>()的用法小结
- c#数据绑定之linq使用示例
- C#实现窗体中的各个控件同比自动放缩大小
- C#关于类的只读只写属性实例分析