我正在使用一些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);
Run Code Online (Sandbox Code Playgroud)
要么
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);
Run Code Online (Sandbox Code Playgroud)
但是我只在ItemArray中得到空字段.值0,1,3可以为空,并且由于其他行的ItemArray的长度为4,我还设置了4个值.
我怎么能做我想做的事?
ItemArray返回object[]包含所有字段的内容.通过索引访问它:
newRow.ItemArray[0] = "".ToArray();
Run Code Online (Sandbox Code Playgroud)
您正在访问单个字段并指定新值.但你分配一个char[]因为你使用String.ToArray(),这是毫无意义的.
相反,我会使用强类型SetField方法,它也支持可空类型:
DataRow newRow = vDsMod.Tables[0].Rows.Add();
newRow.SetField(0, "");
newRow.SetField(1, "");
newRow.SetField(2, "Employee");
newRow.SetField(3, "");
Run Code Online (Sandbox Code Playgroud)
随着Rows.Add();对DataRow已添加.这是一个品味的问题,是否使用DataTable.NewRow()和以后手动或添加它DataTable.Rows.Add().