我得到了下面的代码,我认为应该将DataTable绑定到DataGridView,但DataGridView显示为空。DataTable肯定有行,所以我假设我在某种程度上错误地绑定了DataSource。有没有人看到这是什么错了:
DataBase db = new DataBase(re.OutputDir+"\\Matches.db");
MatchDBReader reader = new MatchDBReader(db.NewConnection());
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = reader.GetDataTable();
this.dataGridView1.DataSource = bindingSource.DataSource;
- 第一行只是获取一个句柄,指向我从中提取数据的DB。
- 下一行是a,它提供了一个从同一个数据库中阅读的类--特别是它公开了GetDataTable方法,并返回我打算放入DataGridView的数据表。
- 下一行没什么意思...
- 第4行尝试抓取DataTable - QuickWatch表明这是工作.
- 最后一行是我假设我搞砸了的地方...我的理解是,这将DataTable绑定到DataGridView GUI,但什么也没有显示。
有什么想法吗?
6条答案
按热度按时间7uhlpewt1#
尝试将DataGridView直接绑定到BindingSource,而不是BindingSource的DataSource:
laawzig22#
在获取数据表之前,您需要将BindingSource附加到网格。
尝试切换最后两行代码:
nxowjjhe3#
沿着上述解决方案还修复了“bindingSource”数据库属性。例如:
我在使用sql数据库和datagrid视图时也遇到了同样的问题。在经历了大量的麻烦之后,我发现我忘记设置绑定源的dataMember属性。
祝你好运。
kx5bkwkv4#
所有这些对我都不起作用,尽管看起来都是好建议。我最后做的是世界上最大,最糟糕的黑客。我希望完成的只是从SQLite数据库加载一个DB表,并在DataGridView中显示它(只读,具有可排序的列)。实际的DB将在运行时以编程方式指定。我通过向表单添加DataGridView来定义数据集,并使用向导静态定义数据库连接字符串。然后我进入Settings.Designer.cs文件,并将
set
访问器添加到DB Connection字符串属性:这是一个klugey黑客,但它的工作。关于如何清理这个烂摊子的建议非常受欢迎。
布莱恩
hof1towb5#
DataGridView
以DataTable
为基础。DataTable
列保存其Type作为属性。如果这个类型是一个接口,你会看到所有的空单元格。
ctehm74n6#
这对我很有效(放在Form_Load中):
显然,这是唯一的方法,因为AutoGenerateColumns没有在网格的属性表中列出。