1

我是 Web UI、Dojo、Java 等的新手。如果您指的是任何高级主题,请提供一些阅读参考。我会帮你的。

语境:

  1. 我有使用JsonStore的Gridx设计,它采用目标 + id 作为 URL。使用固定的“id”网格可以很好地加载。

  2. 我有动态树。延迟加载等工作正常。

客观的:

基于 Tree 中给定节点的单击(或 dblclick)事件,我必须使用数据加载 Gridx。因此,如果单击树节点 "id":7,则应获取 JsonStore: /target/7 并将其加载到 Gridx 中。

问题:

  1. 你可以猜到,一开始没有有效的“id”属性来填写 JsonStore。在树的单击事件处理程序中,我将在用户单击时获取此值。因此,不能在“就绪”状态下调用 gridx.startup()。尽管我已将小部件“放置”在“就绪”状态。

  2. 因此,我有以下片段要处理,<


  // this function is called from tree event handler
function LatestTabGridxLoad( id ) {
    console.log( "ID %s fetched.", id );
    LatestTabGridxStore.idProperty = id;
    LatestTabGridx.startup();
    LatestTabGridx.body.refresh();
}

ready(function()
{
    TabLatestAssetTree.startup();
    LatestTabGridx.placeAt( "ReportMiddleTabLatestCenterContainer" );
}

现在,麻烦的是,在第一次加载时,JsonStore GET 单独使用 /target/ 触发,没有任何“id”,没有任何用户点击。因此,服务器以 405 响应。随后,当用户单击时,没有“id”的相同 HTTP GET 再次导致 HTTP 405。我无法以某种方式将“id”提供给 GET URL。我检查了 JSON,它的形状很完美,因为它在独立表中工作,这是声明性(ly)定义的。

请建议我通过其“id”将树节点链接到 Gridx 的方法。还建议,如果我采取的方法是解决这个问题的正确方法。

4

1 回答 1

0

对不起,对问题的误解。我认为这是关于 gridx 树,但它是关于由另一个小部件控制的常规 gridx。

问题出在这一行:

console.log("已获取 ID %s。", id ); LatestTabGridxStore.idProperty = id;

“idProperty”是存储 ID 的 JSON 属性的名称。这不会随着每次选择而改变。如果未设置,JsonStore 将假定它为 'id'。您打算做的是修改商店的目标属性以包含 ID。这可以直接完成,看起来像下面这样(细节是特定于应用程序的)

LatestTabGridxStore.target = (someURL) + '/' + id;

之后,需要使用新的 store 设置替换 gridx 的内容。有几种方法可以做到这一点,最简单的方法是销毁当前的 gridx 实例并将其替换为另一个使用更改后的存储的实例。

于 2013-11-03T17:02:14.260 回答