将值添加到Row ItemArray

时间:2014-04-01 09:02:11

标签: c#

我正在使用一些DataRow,并使用它,一些ItemArray。

我知道如何将值传入ItemArray,但在创建新Row时,我不知道如何设置值。

所以我尝试了这个:

                    DataRow newRow = vDsMod.Tables[0].NewRow();
                    newRow.ItemArray[0] = "".ToArray();
                    newRow.ItemArray[1] = "".ToArray();
                    newRow.ItemArray[2] = "Employee".ToArray();
                    newRow.ItemArray[3] = "".ToArray();
                    vDsMod.Tables[0].Rows.Add(newRow);

                    DataRow newRow = vDsMod.Tables[0].NewRow();
                    newRow.ItemArray.SetValue("", 0);
                    newRow.ItemArray.SetValue("", 1);
                    newRow.ItemArray.SetValue("Employee", 2);
                    newRow.ItemArray.SetValue("", 3);
                    vDsMod.Tables[0].Rows.Add(newRow);

但是我在ItemArray中只有空字段。 值0,1,3可以为空,并且由于其他行的ItemArray长度为4,我还设置了4个值。

我怎样才能做我想做的事?

2 个答案:

答案 0 :(得分:7)

ItemArray会返回object[],其中包含所有字段。通过索引访问它:

newRow.ItemArray[0] = "".ToArray();

您正在访问单个字段并指定新值。但是,由于您使用char[],因此您需要分配String.ToArray(),这是毫无意义的。

相反,我会使用强类型SetField方法,它也支持可空类型:

DataRow newRow = vDsMod.Tables[0].Rows.Add();
newRow.SetField(0, ""); 
newRow.SetField(1, ""); 
newRow.SetField(2, "Employee"); 
newRow.SetField(3, ""); 

Rows.Add();已添加DataRow。无论是使用DataTable.NewRow()还是稍后手动添加DataTable.Rows.Add(),都是一种品味问题。

答案 1 :(得分:1)

你可以按照以下方式进行..

   DataRow relation;
     // Declare the array variable. 
    object [] rowArray = new object[2];
   for(int i = 0; i <10; i++)
    {
      rowArray[0]=null;
       rowArray[1]= "item " + i;
      relation = dt.NewRow();
      relation.ItemArray = rowArray;
      dt.Rows.Add(relation);
    }

我希望它会对你有所帮助 是的,这是微软的帮助。但是根据你的问题,你似乎没有找到你刚才提出的问题。你想知道如何初始化ItemArray(我能理解的很多),你可以找到很多与此相关的例子。