首页 > 后端开发 > C#.Net教程 > C# DataRow.ItemArray 属性

C# DataRow.ItemArray 属性

黄舟
发布: 2017-02-21 11:03:14
原创
4037 人浏览过

DataRow.ItemArray 属性
通过一个数组来获取或设置此行的所有值。
命名空间:System.Data

程序集:System.Data(在 system.data.dll 中)

代码示例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

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 <10; 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]);

        }

    }

}

登录后复制

异常:



异常类型条件

ArgumentException

数组大于表中的列数。

InvalidCastException

数组中的值与其相应的 DataColumn 中的 DataType 不匹配。

ConstraintException

编辑破坏了约束。

ReadOnlyException

编辑试图更改只读列的值。

NoNullAllowedException

编辑试图将空值放在 DataColumn 对象的 AllowDBNull 为 false 的列中。

DeletedRowInaccessibleException

该行已被删除。

DataRow.ItemArray 属性源代码实现:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

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();

    }

}

登录后复制

以上就是C#  DataRow.ItemArray 属性的内容,更多相关内容请关注PHP中文网(www.php.cn)!


相关标签:
c#
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板