我正在使用C#开发桌面应用程序(在Visual Studio 2010中,框架4.0)。我必须在不同的地方显示相同的(或稍微修改 - 没有一些列)datagridview / table。我将从查询不同(本地)文件中获取数据。我觉得为每个表创建一个新查询非常费劲。因此我想到了用查询绑定表。但我不知道这是否是最佳方式。我不知道将数据绑定到gridview是多么“昂贵”。也许最好以某种方式显示相同的表格,可能将其放在面板中然后正确显示(根据用户的导航将其移动到不同的位置/用户控件)。
这些表并不是那么大,但我需要在相当多的位置显示4-5个,我不想浪费内存,因为还有一些非常大的表。
有什么想法吗?
感谢您的时间和答案。
答案 0 :(得分:1)
每个datagridview数据绑定的单个表可能是最好的方法。这允许您一次加载数据(这很好),然后让每个datagridview以一种方式“解释”数据。当然可以保存很多文件I / O!
答案 1 :(得分:1)
正如肯已经说过的那样,你应该在你的表格中添加几个DataGridViews
。但是你将它们全部附加到同一个BindingSource
。对于BindingSource.DataSource
,您只需在获取一次后附加包含所有数据的列表(集合,等等)。
所有数据网格的设置和配置都可以在设计时使用Visual Studio设计器完成。为此,您应该查看this answer。它解释了如何创建和附加绑定源到TextBox,但对于数据网格是相同的。在设计器中进行此绑定之后,您可以随后使用设计器深入到网格的Columns属性中,并根据需要更改每列的可见性等。
答案 2 :(得分:0)
您可以将网格对象缓存在内存中(避免在处置容器时进行处置)并在其他表单上显示。如果您缓存数据而不是UI控件,则更好的方法是。并以不同的形式使用网格上的数据。
答案 3 :(得分:0)
如果您希望最小化所需的内存并且同时只想执行一次查询,则可以将这些查询的结果保存到(例如)数据表中。然后创建一个datagridview,并在每次需要时将它绑定到这些表上。
如果你想真正保持小,你可以定义自己的自定义数据类这个link解释了你需要为这些自定义类使用哪些接口。