如何使用AJAX加载Dojo Dgrid表的数据?

时间:2013-08-21 12:08:05

标签: javascript ajax dojo dgrid

我正在探索将DGrid用于我的Web应用程序。我想要一个类似于this的表格。 上面示例的代码是here

该表使用内存存储作为其数据源 - 当我们单击并展开每一行时,会显示汇总字段。

我希望在点击行时从服务器获取详细信息(即单击行时显示的文本),而不是静态加载页面的其余部分。 如何修改上面的代码才能做到这一点?

(我的要求是一个HTML表格,每一行都可以在点击时展开,其中每个扩展的数据都是从服务器获取的,例如使用AJAX。我只是在探索dgrid作为一个选项,因为我得到了可排序的列dgrid免费。如果有更好的选择,请告诉我)

编辑:基本上我正在寻找这样做的想法,而不是期望任何人实际给我代码。由于对Dojo不太熟悉,我不确定什么是正确的方法

1 个答案:

答案 0 :(得分:1)

如果你的ajax调用返回html,你可以在你的渲染器中放置一个dijit / layout / ContentPane,并在ContentPane的href属性中设置你想要获取的内容的url。假设您的初始数据(相当于示例的内存存储)将包含一个名为“yourServiceCallHref”的属性,其中包含您想要延迟加载的URL,您可以尝试这样做:

require(["dijit/layout/ContentPane", ...], function(ContentPane){

    renderers = {
        ...,
        table: function(obj, options){
            var div = put("div.collapsed", Grid.prototype.renderRow.apply(this, arguments)),
                cp = new ContentPane({
                    href : obj.yourServiceCallHref
                }),                       
                expando = put(div, "div.expando", cp.domNode);
                cp.startup();
        return div;
    }
});

如果您的服务返回json,您可能会以类似的方式对dojo/request执行某些操作。只需在请求回调中添加dom创建步骤,并将它们放在名为“expando”的div中......

另一种选择是用JsonRest存储替换Memory存储,并让服务器输出与你在Memory存储上看到的相同的json格式。这意味着所有数据都将通过一次通话获取......