繁体   English   中英

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

[英]How do I load data for Dojo Dgrid Table using AJAX?

我正在探索将DGrid用于我的Web应用程序。 我正在尝试有一张与此类似的桌子。 上面示例的代码在这里

该表使用内存存储作为其数据源-当单击并展开每一行时,摘要字段将显示内容。

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

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

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

如果您的ajax调用返回html,则可以在渲染器中放置dijit / layout / ContentPane,然后在ContentPane的href属性中设置要获取的内容的url。 假设您的初始数据(相当于示例的内存存储)将具有一个名为“ yourServiceCallHref”的属性,其中包含您要延迟加载的网址,则可以尝试以下操作:

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创建步骤,然后将它们放入div中,称为“ expando”即可...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM