可以考虑在子表中ColDataChanged事件里面写代码
- Public Sub ColDataChanged(sender As Object,e As sanMuSoft.CS.WinForm.ColDataEventArgs)
- If e.ColData.Name="部门编号" Then
- '获得当前子表的引用
- Dim tbl As SmGrid=sender
- '获得子表对应的父表的引用
- Dim tblMain As BaseGrid=tbl.Relation.ParentGrid
- '如果父表当前行不为空
- If tblMain.CurrentRowData IsNot Nothing Then
- '将子表中所有行中的数据用逗号隔开填充到主表当前行对应字段中
- tblMain.CurrentRowData("产品分类说明")= tbl.DataTableHelp.GetComboListString("部门编号").Replace("|",",")
- End If
- End If
- End Sub
复制代码
如果你上面想保存部门ID而不是部门名称的话,就要使用到字典,主表就要用到“字典多值显示”。
这些需求都算得上常规。但是你如果还想进一步地实现对主表中用逗号分隔开的部门信息进行筛选那就比较麻烦了。
情况一:只针对单个部门进行筛选,这种比较简单,用Like进行模糊筛选就好办。
情况二:想实现多个部门复选筛选,这种就麻烦了。目前没有现成的功能。只能自己自定义窗体,用代码实现自定义筛选逻辑。主要通过主表与子表关联,通过部门信息获得相应的主表信息,然后再筛选出相应的主表信息。 |