该行已经属于另一个表...怎么解决啊
private void Data_Bind()
{
//================ 1.0 数据初始化 ===========
SQLBuilder sSql = new SQLBuilder();
string sPaperUID = ConvertUtil.ToString(Request["uid"]);
int nCount = 1000;
//================ 2.0 拼SQL ===========
sSql.AddCondition("paper_uid", "组卷号", sPaperUID, SQLConditionOperator.Equal);
sSql.PushSortField("outline_uid");
if (sPaperUID != "")
{
//IList<TbPaperExaminationProcessView> list = TbPaperExaminationProcessView.GetDataSetWhere(sSql.ToWhereString(), sSql.ToOrderByString(), 0, 1000,ref nCount);
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds = TbPaperExaminationProcessView.GetDataSetWhere(sSql.ToWhereString(), sSql.ToOrderByString(), 0, 1000, ref nCount);
foreach (DataRow dr in ds.Tables[0].Rows)
{
string sTqType = ConvertUtil.ToString(dr["tq_type"]);
if (sTqType == "simple")
{
Repeater_Info.DataSource = ds;
Repeater_Info.DataBind();
}
else
{
// dt.ImportRow(dr);
dt.Rows.Add(dr); //总是说该行已经属于被另一个表
Repeater_jianda.DataSource = dt;
Repeater_jianda.DataBind();
}
}
}
}
------解决方案--------------------dt.Rows.Add(dr.ItemArray);
这样试试。
------解决方案--------------------foreach (DataRow dr in ds.Tables[0].Rows)
{
string sTqType = ConvertUtil.ToString(dr["tq_type"]);
if (sTqType == "simple")
{
Repeater_Info.DataSource = ds;
Repeater_Info.DataBind();
}
else
{
DataRow row = dr;
dt.Rows.Add(row ); //试试
Repeater_jianda.DataSource = dt;
Repeater_jianda.DataBind();
}
------解决方案--------------------加这句
DataRow drNew=dt.NewRow();
drNew=dr;
dt.Rows.Add(drNew); //总是说该行已经属于被另一个表
你的dr已经属于别的DataTable,当然不能赋值给其他的DataTablel了
------解决方案--------------------
------解决方案--------------------你应该为dt创建新的列新的行newDr,然后将dr里面的数据赋给newDr,然后加入dt