DataSet中DataTable添加行引发“该行已经属于另一个表”错误

示例:将dt1的数据复制到dt2中。

DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();

//将dt1的结构克隆给dt2
dt2 = dt1.Clone();
for (int i = 0; i < dt1.Rows.Count; i++)
{
DataRow dr = dt2.NewRow();
dr = dt1.Rows[i];
//此行将引发——DataTable添加行出现“该行已经属于另一个表”的错误
//dt2.Rows.Add(dr);
//换成这种写法是正确的或者可以直接使用dt2.Rows.Add(dt1.Rows[i].ItemArray);
dt2.Rows.Add(dr.ItemArray);
}

JS 获取某个元素上一个或下一个节点 previousSibling & nextSibling

nextSibling 属性可返回节某个元素之后下一个节点。
previousSibling则与其相反,获取的是同一层级的上一节点。
语法:
nodeObject.nextSibling
例如,txt控件在一个table中,若想要输出该txt所在单元格的上一个单元格内的值。
alert(txt.parentNode.previousSibling.innerText);