繁体   English   中英

使用折叠/展开行.net通过Datagridview中的数据集显示相关数据表

[英]Showing related Datatables via a Dataset in a Datagridview using collapsing/expanding rows .net

我有2个datable被添加到数据集中:

父表:

Dim ctable As New DataTable("Category")
ctable.Columns.Add("Category", GetType(String))

一个儿童表:

Dim vtable As New DataTable("ValueTable")
vtable.Columns.Add("Category", GetType(String))
vtable.Columns.Add("Profile", GetType(String))
vtable.Columns.Add("Value", GetType(Double))

添加到数据集,并使用数据关系通过“类别”列链接:

Dim masterdata As New DataSet()
masterdata.Tables.Add(ctable)
masterdata.Tables.Add(vtable)
Dim dr As DataRelation = New DataRelation("ValueCategory",
                                              ctable.Columns("Category"),
                                              vtable.Columns("Category"), True)
masterdata.Relations.Add(dr)

将此添加到datagridview作为数据源,如:

aDataGridView.DataSource = masterdata.tables(0)

这只会显示父表,但是我希望有与我的datarelation相关的可扩展行,但是它行不通。 我还尝试将我的数据源绑定到一个绑定源,该数据源作为我的masterdata表,而我的数据成员是我的关系,这对我来说更有意义,但这也行不通。 最初我遵循以下示例

https://www.mindstick.com/Articles/1416/expandable-and-collapsible-rows-in-datagrid-in-c-sharp-winforms

这是一个类似的问题,但不相同:

在一个datagridview中显示父datatable,在另一个datagridview中显示子datatable元素?

确实是一个有趣的问题,从来没有尝试过,我认为我对DataGridView很了解。

我会尝试绕过datarelation并执行以下操作:

  • 相同的列定义ctable和vtable,因为datagridview必须具有一组列
  • 仅将“ Category”列用于类别,将其留空以获取详细信息(以区分两种类型的行
  • 将隐藏列IsExpanded添加为DataGridViewCheckBox。 默认=假
  • 创建CellClick事件,该事件将循环为IsExpanded中的当前行(e.rowindex)值(但仅在该行是类别行时)并调用UpdateGrid()函数
  • 在UpgradeGrid()函数中,请注意将详细信息直接添加到您正在用作数据源的(一个)DataTable中(也就是将vtables合并到ctables中以扩展类别;您可以在此处使用datarelation)。

我希望我能清楚地解释我的想法。 我会尽可能尝试,可能会派上用场。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM