【问题标题】:can't add all the selected rows to the dataset无法将所有选定的行添加到数据集
【发布时间】:2018-08-30 12:20:16
【问题描述】:

我在datatable 中添加了选择的记录 (checkbox),如下所示,记录已显示在使用 stored procedure 填充的 datagrid 中。然后在button clicksave所有选中(添加)的记录到dsdatabase

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

请帮忙。谢谢!

【问题讨论】:

    标签: asp.net datatable dataset


    【解决方案1】:

    您必须创建一个新行并将其添加到数据表中在循环内,因此每次它都会创建一个新实例并将其添加到您的数据表中。
    检查更新的代码。

    public DataSet getMain()
    {
        DataSet ds = CFObj.GetSchemaRequest();
        DataRow dr;
        for (int i = 0; i < dgAvailableCandidates.Items.Count; i++)
        {
            CheckBox saveChkBoxItem = (CheckBox)dgAvailableCandidates.Items[i].FindControl("chkbox_SelectCandidate");
            if (saveChkBoxItem.Checked)
            {
                dr = ds.Tables[0].NewRow();
                //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;
    }
    

    【讨论】:

    • 首先感谢您的指导。您能否发布一个不错的链接以提高我对数据表(或 ado 网络)的概念理解,谢谢!
    猜你喜欢
    • 2018-06-22
    • 2021-11-30
    • 1970-01-01
    • 2022-11-30
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    相关资源
    最近更新 更多