You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将DataTable中选中的所有行添加至DataSet的技术问题

问题分析与解决方案

看起来你在把DataGrid中选中的行保存到DataSet时,代码里漏掉了几个关键步骤,导致无法捕获所有选中记录。咱们来一步步修正这个问题:

核心问题点

你的现有代码只是循环找到了每行的CheckBox控件,但既没有判断控件是否被选中,也没有把选中行的数据添加到DataSet的DataTable里,而且DataRow的创建位置也不对(只创建了一次,无法复用给多个行)。

修正后的完整代码

public DataSet getMain() 
{ 
    // 获取带结构的空DataSet(假设GetSchemaRequest返回的是仅含表结构的DataSet)
    DataSet ds = CFObj.GetSchemaRequest(); 
    DataTable targetTable = ds.Tables[0];

    foreach (DataGridItem item in dgAvailableCandidates.Items) 
    { 
        // 找到当前行的选择CheckBox
        CheckBox saveChkBoxItem = item.FindControl("chkbox_Select") as CheckBox;
        
        // 先确认控件存在且被选中
        if (saveChkBoxItem != null && saveChkBoxItem.Checked)
        {
            // 获取当前行绑定的原始数据(这里假设绑定的是DataRowView,根据你的实际绑定类型调整)
            DataRowView rowView = item.DataItem as DataRowView;
            if (rowView != null)
            {
                // 创建新行,复制选中行的所有数据
                DataRow newRow = targetTable.NewRow();
                newRow.ItemArray = rowView.Row.ItemArray;
                
                // 将新行添加到目标表中
                targetTable.Rows.Add(newRow);
            }
        }
    }

    return ds;
}

关键修正说明

  1. 选中状态判断:新增了saveChkBoxItem.Checked的判断,只处理真正被选中的行,避免无效操作
  2. 循环优化:改用foreach遍历DataGridItem,代码更简洁易读
  3. 正确创建DataRow:把DataRow的创建移到选中判断内部,每个选中行都生成独立的新行
  4. 数据复制:从DataGridItem的DataItem中获取原始绑定数据,完整复制到新行里(如果不需要全列复制,可以单独指定列赋值,比如newRow["UserId"] = rowView.Row["UserId"])
  5. 添加到表中:最后一定要把新行添加到DataTable的Rows集合里,这样DataSet才会包含这些选中记录

如果你的DataGrid绑定的是自定义实体类(比如Candidate),只需要调整数据获取的部分:

// 假设绑定的是自定义Candidate类
Candidate selectedCandidate = item.DataItem as Candidate;
if (selectedCandidate != null)
{
    DataRow newRow = targetTable.NewRow();
    newRow["CandidateId"] = selectedCandidate.Id;
    newRow["FullName"] = selectedCandidate.FullName;
    // 其他字段按需赋值
    targetTable.Rows.Add(newRow);
}

这样修改后,你的DataSet就会正确包含所有选中的记录,后续就可以正常将这些数据保存到数据库了。

内容的提问来源于stack exchange,提问作者Nikhil G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:37:34