2014-04-01 88 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

已經在谷歌搜索中發現了這個,並且沒有發現它,並且不知道它是否適合我的問題。 –