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
相关产品推荐
相关产品推荐

