【问题标题】:Update Gridx with JsonStore, on event?在事件中使用 JsonStore 更新 Gridx?
【发布时间】:2013-01-12 07:32:37
【问题描述】:

我是 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. 因此,我有以下 sn-p 来处理,


  // 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”将 TREE 节点链接到 Gridx 的方法。还建议,如果我采取的方法是解决这个问题的正确方法。

【问题讨论】:

    标签: datagrid dojo jsonstore dijit.tree dojo.gridx


    【解决方案1】:

    抱歉,问题误解了。我以为是关于 gridx 树,但它是关于由另一个小部件控制的常规 gridx。

    问题出在这一行:

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

    'idProperty' 是存储 ID 的 JSON 属性的名称。这不会随着每次选择而改变。如果未设置,JsonStore 将假定它为 'id'。您打算做的是修改商店的目标属性以包含 ID。这可以直接完成,如下所示(详细信息因应用而异)

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

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

    【讨论】:

    • 请不要使用答案来发表评论、寻求帮助或说出类似“嘿,我也有这个问题”之类的话,因此,这是作为答案发布的,但它并没有试图回答这个问题.它可能应该是编辑、评论、另一个问题或完全删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2011-10-28
    • 1970-01-01
    • 2019-06-04
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多