vb.net - 使用带有一个数据表的分离数据视图来填充两个组合框
问题描述
我有一个数据表和两个数据视图,我想使用每个数据视图来填充一个组合框作为下一个代码:
Dim xDv_Parents As DataView = MyVar_Dt_AllAccounts.DefaultView
xDv_Parents.RowFilter = "AccType='Main'"
Call xCLS.MyCodes_CboFill_Dv(Me.CboAccParent, "AccName", "AccID", xDv_Parents)
Dim xDv_Final As DataView = MyVar_Dt_AllAccounts.DefaultView
xDv_Final.RowFilter = "AccType='Final'"
Call xCLS.MyCodes_CboFill_Dv(Me.CboAccFinal, "AccName", "AccID", xDv_Final)
但是当我调试应用程序时,它会根据最后一个名为 (xDv_Final) 的 Dataview 在两个组合框中为我提供相同的内容。
我尝试将一个 Dataview 与不同的行过滤器一起使用,但没有成功。请问这里到底有什么问题!?
解决方案
这是因为您为两个组合框重用了相同的视图。您所做的只是在内存中建立指向同一个对象的新变量。首先你有这个:
然后你创建了另一个变量,同一个对象:
Dim xDv_Parents As DataView = MyVar_Dt_AllAccounts.DefaultView
然后你设置一个rowfilter:
xDv_Parents.RowFilter = "AccType='Main'"
然后你告诉一个组合使用它,所以现在你也有一个指向它的组合:
Call xCLS.MyCodes_CboFill_Dv(Me.CboAccParent, "AccName", "AccID", xDv_Parents)
然后你创建了另一个变量,也指向它,并覆盖了你刚刚设置的行过滤器:
Dim xDv_Final As DataView = MyVar_Dt_AllAccounts.DefaultView
xDv_Final.RowFilter = "AccType='Final'"
最后,您将另一个组合附加到同一视图:
Call xCLS.MyCodes_CboFill_Dv(Me.CboAccFinal, "AccName", "AccID", xDv_Final)
这就是 .net 编程语言中变量的工作方式。除非您使用,否则您New
只是将新变量附加到现有对象实例
你应该做的是:
Dim xDv_Parents = new DataView(MyVar_Dt_AllAccounts)
xDv_Parents.RowFilter = "AccType='Main'"
xCLS.MyCodes_CboFill_Dv(Me.CboAccParent, "AccName", "AccID", xDv_Parents)
Dim xDv_Final = New DataView(MyVar_Dt_AllAccounts.DefaultView)
xDv_Final.RowFilter = "AccType='Final'"
xCLS.MyCodes_CboFill_Dv(Me.CboAccFinal, "AccName", "AccID", xDv_Final)
推荐阅读
- regex - 具有两个参数的 Htaccess 规则
- python - 图中重复的节点名称:'conv2d_0/kernel/Adam'
- excel - 使用 VBA 在 Excel 中抑制 OneDrive 消息横幅
- unix - crontab 不会为用户运行
- sql - 更新 Oracle 11g HR 模式的列值
- c# - 如何从给定文件夹加载图像
- php - 读取图像文件导致错误 - 未捕获的 ReferenceError
- amazon-web-services - 为什么为跨区域 VPC 对等连接启用 DNS 解析支持
- python - 来自 pandas 数据框的图中的分组堆叠条形图
- qt - 如何让孩子在qml中跟随父母的旋转