|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具)明天偶然间用到ImportRow()向DataTable中增加纪录,代码以下:
privatevoidAddAppendix(stringfileName,stringDbName)
{
DataTabledtAppendix=UpdateAppendix();
DataRowdr=dtAppendix.NewRow();
dr["Appendix"]=fileName;
dr["DbName"]=DbName;
dtAppendix.ImportRow(dr);
}
但是实行后发明dtAppendix中的纪录并没有增添。但是将上述黄色代码换成dtAppendix.Rows.Add(dr);就能够了。后上彀查了下材料弄分明了缘故原由。上面就说一下这二者的用法与区分及其合用情形。
1、起首,我们先说下DataTable.NewRow()办法,这个办法能够创立和表具有不异构架的DataRow(并且必需利用这个办法才干创立和原表一样构架的DataRow),而且这个新行是增加在原表上的。可是我发明这个DataTable中并没有这个空行。为何?缘故原由是如许的:本来Datatable中Rows都一个RowState属性,共有以下几种:
1,Detached该行已被创立,但不属于任何DataRowCollection。DataRow在以下情形下当即处于此形态:创立以后增加到汇合中之前;或从汇合中移除以后。
2,Unchanged该行自前次挪用AcceptChanges以来还没有变动。
3,Added该行已增加到DataRowCollection中,AcceptChanges还没有挪用。
4,Deleted该行已经由过程DataRow的Delete办法被删除。
5,Modified该行已被修正,AcceptChanges还没有挪用。
实在NewRow()创立的行其RowState是Detached,不言而喻新建的行是不成见。
2、ImportRow()
将DateRow复制到DataTable中,保存任何属性设置和初始值和以后值。可是当DataRow的RowState属性为Detached时没法复制,以是可见上述黄色代码不成行了。网上有人说不克不及复制是由于新建的行从属于原表,我以为这是不准确,究其缘故原由非常由于行的属性。实在假如我们把行的属性改动的话,ImportRow()办法仍是可行的。
ImportRow()一样平常用于将一个表中的数据复制到另外一个表中。实例代码以下:
privateDataTableHowToUseImportRow(DataTabledt)
{
DataTabledtNew=dt.Clone();
foreach(DataRowdrindt.Rows)
{
dtNew.ImportRow(dr);
}
returndtNew;
}
3、Add()
将制订的DataRow增加到DataRowCollection工具中。实例代码以下:
privatevoidAddRow(DataTabletable)
{
DataRowCollectionrowCollection=table.Rows;
//InstantiateanewrowusingtheNewRowmethod.
DataRownewRow=table.NewRow();
//Insertcodetofilltherowwithvalues.
//AddtherowtotheDataRowCollection.
table.Rows.Add(newRow);
}
增加完后DataRow的RowState属性变成Added。以是把上述的dtAppendix.ImportRow(dr)改成dtAppendix.Rows.Add(dr)便可。无论谁倒了对双方阵营的粉丝们也是有害无益。 |
|