在事件上用JsonStore更新Gridx?

时间:2013-01-28 20:44:26

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

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

上下文:

  1. 我使用 JsonStore 设计了 Gridx ,它为网址带来了目标+ ID。固定的" id"网格加载良好。

  2. 我有动态树。它在懒惰加载等方面运行良好。

  3. 目标:

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

    的问题:

    1. 你可以猜到,一开始没有有效的" id"填写JsonStore的财产。在树的单击事件处理程序中,我将在用户单击时获取此值。因此,无法在" ready"中调用gridx.startup()。虽然我已经安排了#34; "准备好"。

    2. 中的小部件
    3. 因此,我有以下代码片段来处理, <


    4.   // 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 / alone触发,没有任何" id"没有任何用户点击。因此,服务器以405响应。随后,当用户点击时,同样的HTTP GET没有" id"导致HTTP 405.我无法以某种方式提供" id"到GET URL。我已经检查了JSON,它是完美的形状,因为它在独立表中工作,这是声明性(ly)定义。

      请建议我通过其" id"链接TREE节点的方法。到Gridx。同时建议,如果我采取的方法是解决这个问题的正确方法。

1 个答案:

答案 0 :(得分:0)

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

问题出在这一行:

console.log(“ID%s fetched。”,id); LatestTabGridxStore.idProperty = id;

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

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

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