private void TBReplace(DataTable a_tbProcDt, DataTable a_tbProcDetail)
{
foreach (DataRow l_dr in a_tbProcDetail.Rows)
{
if (a_tbProcDt.Select(" tano = '" + l_dr["tano"] + "' and dtno = '" + l_dr["dtno"] + "' ").Length == 0) //New
{
a_tbProcDt.Rows.Add(l_dr);
}
else //Mofify
{
a_tbProcDt.BeginLoadData();
a_tbProcDt.LoadDataRow(l_dr.ItemArray, false);
a_tbProcDt.EndLoadData();
}
}
}
解释:这个函数的目的,是把第二个表中的值给第一个表,如果第一个表没有第二个表中的数据,就给第一个表加一行,如果已经有了,就修改第一个表中的值
问题: 执行完这个函数以后,a_tbProcDt这个表中的值没有发生改变???
难道非要一个单元格一个单元格的赋值???
如果是同一个对象,可以直接赋值对象啊,也可以一次赋值一行,实际上也就是赋值一个对象。
l_drTest[2] = l_dr[2].ToString().Trim().Equals("") ? 0 : double.Parse(l_dr[2].ToString().Trim());
我現在是一個字段一個字段賦值的,一行直接賦值(l_drTest =l_drTest)沒有 用
@maanshancss: l_drTest =l_drTest,看对象都相同,这个肯定是有问题的。
@Wellbeing: (l_drTest =l_dr)
@maanshancss:
private void TBReplace(DataTable a_tbProcDt, DataTable a_tbProcDetail)
{
foreach (DataRow l_dr in a_tbProcDetail.Rows)
{
if (a_tbProcDt.Select(" tano = '" + l_dr["tano"] + "' and dtno = '" + l_dr["dtno"] + "' ").Length == 0) //New
{
a_tbProcDt.ImportRow(l_dr);
}
else //Mofify
{
a_tbProcDt.BeginLoadData();
DataRow l_drTest = a_tbProcDt.Select(" tano = '" + l_dr["tano"] + "' and dtno = '" + l_dr["dtno"] + "' ")[0];
l_drTest[2] = l_dr[2].ToString().Trim().Equals("") ? 0 : double.Parse(l_dr[2].ToString().Trim());
l_drTest[3] = l_dr[3].ToString().Trim().Equals("") ? 0 : double.Parse(l_dr[3].ToString().Trim());
l_drTest[4] = l_dr[4].ToString().Trim().Equals("") ? 0.000 : double.Parse(l_dr[4].ToString().Trim());
l_drTest[5] = l_dr[5].ToString().Trim().Equals("") ? 0.000 : double.Parse(l_dr[5].ToString().Trim());
l_drTest[6] = l_dr[6].ToString().Trim();
a_tbProcDt.EndLoadData();
}
}
}
DataRow 不能属于 两个表啊,难道没有错误提示?
第一处改为a_tbProcDt.Rows.Add(l_dr.ItemArray)行不?;
那個是打錯了, ImportRow 新增沒有用到