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

修改BindingSource的DataMember后,DataGridView无法加载新表数据

解决DataGridView切换数据表无数据的问题

先排查表名匹配问题

  • 确认ListBox选中的表名和wCAsystemdbDataSet里的实际表名完全一致(包括大小写、空格、特殊符号),可以通过调试查看wCAsystemdbDataSet.Tables集合里的表名来核对。
  • 把lstTables.Text换成lstTables.SelectedItem.ToString(),避免ListBox的Text属性可能出现的显示值与实际选中值不符的情况。

确保目标表已加载数据

切换的表必须已经填充了数据,比如调用对应TableAdapter的Fill方法:

// 示例:假设目标表的TableAdapter是UserTableAdapter
userTableAdapter.Fill(wCAsystemdbDataSet.User);

如果是手动添加到ListBox的表名,要确认这些表确实存在于数据集中且已完成数据填充。

修改代码并强制刷新绑定

调整事件代码,增加绑定刷新逻辑:

private void lstTables_SelectedIndexChanged(object sender, EventArgs e)
{
    var selectedTableName = lstTables.SelectedItem?.ToString();
    if (string.IsNullOrEmpty(selectedTableName)) return;

    wCAsystemdbDataSetBindingSource.DataMember = selectedTableName;
    // 重置BindingSource的绑定状态
    wCAsystemdbDataSetBindingSource.ResetBindings(false);
    // 让DataGridView自动生成新表的列(如果之前是手动列,可根据需求调整)
    dataGridView1.AutoGenerateColumns = true;
    // 重新绑定数据源确保生效
    dataGridView1.DataSource = wCAsystemdbDataSetBindingSource;
}

额外注意事项

  • 如果DataGridView是手动添加的固定列,切换表后需要手动调整列的DataPropertyName来匹配新表字段,或者开启AutoGenerateColumns让控件自动适配新表结构。
  • 调试时可以查看wCAsystemdbDataSetBindingSource.Count,如果为0说明目标表没有数据;如果列还是原表的,说明DataMember设置的表名不正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:20:25