【发布时间】:2018-08-30 12:20:16
【问题描述】:
我在datatable 中添加了选择的记录 (checkbox),如下所示,记录已显示在使用 stored procedure 填充的 datagrid 中。然后在button click我save所有选中(添加)的记录到ds中database。
public DataSet getMain()
{
DataSet ds = CFObj.GetSchemaRequest();
DataRow dr;
dr = ds.Tables[0].NewRow();
for (int i = 0; i < dgAvailableCandidates.Items.Count; i++)
{
CheckBox saveChkBoxItem = (CheckBox)dgAvailableCandidates.Items[i].FindControl("chkbox_SelectCandidate");
if (saveChkBoxItem.Checked)
{
//ds.Tables[0].Columns["pk_scrndRecId"].ReadOnly = false;
dr["pk_scrndRecId"] = "0";
dr["fk_jobId"] = ddl_jobList.SelectedValue.ToString();
obj._fkjob_Id = ddl_jobList.SelectedValue.ToString();
dr["fk_recId"] = dgAvailableCandidates.DataKeys[i].ToString();
obj._fk_recId = dgAvailableCandidates.DataKeys[i].ToString();
}
}
ds.Tables[0].Rows.Add(dr);
return ds;
}
这里我的问题是当我将ds.Tables[0].Rows.Add(dr); 放在循环之外时,它只会将最后选择的一条记录添加到ds,当我将它放在loop 中时,它会抛出exception
[pk_scrndRecId] 列是只读的
当我把它放在if 块内时,它会抛出exception:
这一行已经属于这个表。
我无法理解为什么这段代码没有将datagrid 的所有选定行添加到ds。
请帮忙。谢谢!
【问题讨论】: