首页 文章

列出关系作为数据源

提问于
浏览
1

Edit: 似乎正确的值存储在 listWidget.children._values 而不是 listWidget.children 中 . 我觉得奇怪的是孩子们仍然会包含那些旧的行键和空值 .

我'm trying to create a list whose datasource is another datasource'项目的关系 . 例如:我有两个表,一个存储角色,另一个存储权限,我在角色和权限之间有一对多的关系 . rolespermissions 表都具有 name 属性 .

我有一个数据源 roles 的列表来选择一个角色 . 每行都有一个按钮,其中包含onClick事件的以下代码:

app.datasources.roles.selectKey(widget.datasource.item._key);
app.showPage(app.pages.listView);

我不确定这是否是最佳做法,但它将当前角色项设置为存储在 roles list 's row'数据源键中的键 .

listView页面有另一个列表,这次有一个 @datasources.roles.item.permissions 的数据源来从当前角色's permissions. I then have a simple label to output that permission'的名称加载行 .

权限列表第一次加载就好了,列表小部件的子项包含正确的行,但是当您返回角色选择页面并单击另一个角色的按钮时,小部件似乎进入无效状态,其中子键保持为旧行和值为null . 我在行的onDataLoad上有一个事件来输出行窗口小部件,我可以看到新行正在加载并链接到父窗口小部件(列表本身)但是如果我回到该窗口小部件的子窗口,那么值仍然是空值 .

例如,假设我有两个角色:

key | name 
===========
1   | role1 
2   | role2

和以下权限:

key | name  | role_fk
=====================
1   | perm1 | 1
2   | perm2 | 1
3   | perm3 | 2

当我单击按钮加载角色键 1 并显示它的权限列表时,我得到正确的列表:

Permission List:
================
perm1
perm2

当我检查列表小部件时,我也看到了正确的孩子: "List1Row$0", "List1Row$1" . 但是,一旦我返回并单击加载角色键 2 我仍然有子项 "List1Row$0", "List1Row$1" ,它们的值为null,列表显示:

Permission List:
================
perm3

我知道正在创建 perm3 小部件,因为当它's attached. One strange thing is that it'的名称是 "List1Row$2" 时它打印到控制台,这表明旧的行值从未被清除 .

有人知道怎么修这个东西吗?我可以链接一个示例应用程序,它尽可能简单,同时仍然暴露问题 . 我不确定你是否能够使用项目关系作为列表数据源,或者我是如何选择我的数据源,项目和绑定的问题 .

这是一些额外的输出,列表被分离的点是我返回的位置,然后单击以将页面项目设置为第二个项目 .

Loaded row with name List1Row$0
Loaded row with name List1Row$1
Widget Child - Key: __gwt_instance Null? No
Widget Child - Key: _values Null? No
Widget Child - Key: List1Row$0 Null? No
Widget Child - Key: List1Row$1 Null? No
------- Detatching List -------
Loaded row with name List1Row$0
Loaded row with name List1Row$1
Loaded row with name List1Row$2
Widget Child - Key: __gwt_instance Null? No
Widget Child - Key: _values Null? No
Widget Child - Key: List1Row$0 Null? Yes
Widget Child - Key: List1Row$1 Null? Yes

谢谢 .

1 回答

相关问题