【问题标题】:Dojo 1.8 fill an EnhancedGrid with Objects and SubObjects of a provided JsonRestDojo 1.8 用提供的 JsonRest 的对象和子对象填充增强网格
【发布时间】:2013-03-29 21:00:10
【问题描述】:

有没有办法用 JSON 结构中的子对象填充 dojox/grid/EnhancedGrid 的列? 例如,如果我有一个看起来像这样的 JSON-Row:

   {
        id: 2,
        name: "TestItem2",
        created: {
             date: "2013-03-28 11:59:40",
             timezone_type: 3,
             timezone: "Europe/Berlin"
        }
   }

我想在“创建”子对象中用“日期”填充网格的一列。 我已经尝试过在网格的“结构”属性中将列的“字段”属性设置为“created.date”,但这并没有起到作用。

【问题讨论】:

    标签: javascript dojo dojox.grid


    【解决方案1】:

    Apparently 在这种情况下您可以使用格式化程序:

    var structure = [[
        {'name': 'Date', 'field': '_field', formatter: myFormatter }
    ]];
    

    这会将整个节点从 store 传递到一个名为 myFormatter 的函数中,您可以从中传递相关条目,例如:

    function myFormatter(node, rowIdx){
        return node.created.date;
    };
    

    在这里也可以看到 citress 的回答:Dojo grid nested json

    【讨论】:

      【解决方案2】:

      这有点邪恶和蹩脚,但也许改变对象结构会帮助你进入网格。听起来你只想要日期,所以你可以这样做:

      var o = {
          id: 2,
          name: "TestItem2",
          created: {
               date: "2013-03-28 11:59:40",
               timezone_type: 3,
               timezone: "Europe/Berlin"
          }
      };
      
      o.created = o.created.date;
      

      现在对象看起来像这样:

      created: "2013-03-28 11:59:40"
      id: 2
      name: "TestItem2"
      

      这是来自控制台的示例:

      【讨论】:

      • @Seijikun 让我知道这是否对您有帮助。
      • 我想到了,但不幸的是这是不可能的,因为 Rest API 是不可更改的。这适用于日期,但真正的数据模型包含更多的子对象,我需要多个属性。更改模型客户端需要遍历所有项目,这将是非常邪恶的。
      • 我会在这里留下答案,以防它帮助别人。
      猜你喜欢
      • 2013-11-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多