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

C#中XML加载DataGridView后,点击按钮用文本框新增行报错

问题解决:新增XML数据行时的列数不匹配错误

错误原因

你的代码逻辑完全偏离需求:

  • 新建的objDt是无结构空表,直接调用Rows.Add会自动生成临时列,但这和XML读取的目标表毫无关联
  • 你把XML读入objDs后,又将这个无关的空表加入数据集,却把数据源绑定到XML的表,等于根本没往目标表里添加数据,反而因表结构不匹配触发报错

修正后的代码

private void ADDROW_Click(object sender, EventArgs e)  
{
    DataSet objDs = new DataSet();
    // 读取XML文件,获取已定义好的表结构
    objDs.ReadXml("s.xml");
    // 获取XML对应的目标数据表(用表名"ta"比索引更稳妥)
    DataTable targetTable = objDs.Tables["ta"];
    if (targetTable != null)
    {
        // 按XML列顺序传入文本框值,新增数据行
        targetTable.Rows.Add(T01.Text, T02.Text, T03.Text, T04.Text);
        // 可选:将修改后的数据写回XML文件,永久保存
        objDs.WriteXml("s.xml");
        // 重新绑定数据源,刷新DataGridView显示
        dataGridView1.DataSource = targetTable;
    }
}

关键注意点

  • 必须先读取XML获取已有的表结构,不能新建空表操作——XML里的ta表已经定义了Genre、Nom、Note、Vue四列,直接往这个表里加行才能保证列数匹配
  • 传入Rows.Add的文本框值顺序要和XML里的列顺序严格对应,否则会出现数据错位
  • 调用WriteXml可以把新增数据保存回XML文件,下次启动程序时能看到修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:50:03