2014-04-01 90 views
0

我正在使用某些DataRow并使用它,某些ItemArray。将值添加到行ItemArray

我知道如何将值存入ItemArray,但我不知道如何设置值,当我创建一个新的行。

所以,我想这一点:

    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个值。

我该怎么做我想要的?

回答

6

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

确实有效。对于Row.Add(),这是一个口味问题,我明白,但是如果(也许有一天)忘记了,并且添加了两行代码。它不会添加行两次? –

+0

@Zaphod:如果你试图通过'Rows.Add(newRow)'添加这行,你会得到一个异常,该行已经属于这个表。所以错误地添加两次是不可能的。 –

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(尽我所知),你可以找到很多与此相关的例子。

+0

已经在谷歌搜索中发现了这个,并且没有发现它,并且不知道它是否适合我的问题。 –