我遇到了一些遗留代码似乎有点奇怪的问题。有问题的代码是使用 2 个 DataTables 创建一个 DataSet,然后在数据用于网格视图(自定义用户控件)之前定义表之间的关系 - 子记录分组在适当的父记录下。关系似乎设置正确,ParentColumn
和ChildColumn
都设置为具有匹配值的列。但是,如果两个父级之间的另外两个单独的列值相同,则所有子记录仅显示在一个父级下方。
数据集信息
资源表
| 用户名 | 会员ID | 名字 | 姓氏 | 电子邮件 |
| 53C ... | C3A ........ | 詹姆斯..... | 巴恩斯.....| jbarnes@rmail.com |
| AE4 ... | 07A .... | 詹姆斯..... | 巴恩斯.....| buckybarnes@hotmail.com |
请求表
| 请求ID | 所有者 ID | 会员ID |
| 第1234章………… 53C .......| C3A .... |
| 第2345章 AE4 .......| 07A ....|
| 7689 ........| AE4 .......| 07A .... |
在这种情况下,Resource
表中的行是父记录,表中的行是子记录Request
。基于此,我的预期是 53C James Barnes 的记录下方会有 1 排,AE4 James Barnes 下方会有 2 排。实际上,我在 53C(我认为)James Barnes 下看到了 3 排。其他詹姆斯巴恩斯没有列出。
这是以下设置DataRelation
:
DataRelation resource_timesheet = new DataRelation(
"relationName",
ResourceTable.Columns[0],
RequestTable.Columns[1],
false);
由于直接引用父/子值列,我认为列名无关紧要(也许?)。
我浏览了大量可以在这里和其他地方找到的文章,但我没有发现任何类似的东西。除了资源表中名字和姓氏匹配的情况外,其他一切都正常。