ItemFileWriteStore vs dojo.store.Memory?

Posted

技术标签:

【中文标题】ItemFileWriteStore vs dojo.store.Memory?【英文标题】:ItemFileWriteStore vs dojo.store.Memory? 【发布时间】:2013-09-23 21:36:51 【问题描述】:

我正在使用 dojo 1.6,我想创建一个商店来连接到网格;然而,在 dojo 1.6 中只存在 ItemFileWriteStore 和 store Memory 这两种方式,这两种方式中哪一种是最好的?

我正在为控制器使用 spring 2.5。

【问题讨论】:

Dojo 1.6 有内存存储吗?我不这么认为。 :) 有趣的问题。我从来没有设法使用内存存储(在 1.9.1 中)启动网格。 根据参考指南,它是从 1.6 开始的。 是的,dojo/store 最初是在 Dojo 1.6 中添加的,所以它有 dojo/store/Memory。 【参考方案1】:

对此不一定有一个“正确”的答案,但这里有一些事情需要考虑。

dojo/store API 旨在取代 dojo/data。因此,从最佳/现代实践的角度推荐dojo/store

但是,假设您在谈论 dojox/grid,该组件只知道如何使用 dojo/data 存储。这让您有两个选择:

使用dojo/data/ItemFileWriteStore 使用包裹在dojo/data/ObjectStore 中的dojo/store/Memory(将dojo/storedojo/data API 包裹起来,以便旧商店的消费者可以使用它)

另一件值得考虑的事情是dojo/store/Memory 不支持直接从 URL 中提取数据,而 dojo/data/ItemFileWriteStore 支持。如果您打算从另一个 URL 加载数据,您仍然可以使用 dojo/store/Memory,但您必须先自己 XHR 数据。

【讨论】:

主要感谢把 xhr var xhrArgsSolEnv = url : "BandejaDrawback.htm?action=conSolPrelim", handleAs : "json" ; 的参数【参考方案2】:

主要感谢一个放xhr的参数

var xhrArgsSolEnv = url : "BandejaDrawback.htm?action=conSolPrelim", handleAs : "json" ;

然后我调用函数

var cargarSolicEnv = dojo.xhrGet(xhrArgsSolEnv);

var xhrArgsSolEnv = url : "BandejaDrawback.htm?action=conSolPrelim", handleAs : "json" ;

并填充网格

function js_solicitudEnv(data)

            var mydata = new dojo.store.Memory(data : data);
    var store = new dojo.data.ObjectStore(objectStore: mydata);

    var layoutSolEnv = [ name : "Orden", field : "orden",width : "10%",styles: "text-align: center;" ,
                         name : "Solicitud", field : "numSolicitud",width :"15%" , styles: "text-align: center;" 
                          ,formatter: function(value)return "<a href='#'>"+value+"</a>";,
                         name : "Fecha de Registro" ,field: "fecRegistro", width :"25%",styles: "text-align: center;",
                         name : "Monto", field: "mtoSolicitado", width :"20%",styles: "text-align: center;",
                         name : "Estado", field: "estado", width :"30%",styles: "text-align: center;"];


    var gridSolicEnv = new dojox.grid.DataGrid(
        store :  store,
        structure : layoutSolEnv,
        style : "width : 800px; height : 150px"
    ,"gridSolicEnv");

    gridSolicEnv.startup();


    var btnNuevaSol =  new dijit.form.Button(
        showlabel : true,
        label : "Nueva Solicitud",
        onClick : function() 
                    window.location.href = "BandejaDrawback.htm?action=valAccRegistrodeSolicitud";
                  
    ,"btnNuevaSol"); 

    if(data.totalCount >=5)
      btnNuevaSol.set("disabled",true);
    

【讨论】:

以上是关于ItemFileWriteStore vs dojo.store.Memory?的主要内容,如果未能解决你的问题,请参考以下文章

Dojo ItemFileWriteStore 未读取 JSON 服务器文件

DOJ1187 : 重建家园 (分数规划 && 二分 && kruskal)

传递列以转换为时区值

必须出现在 postgresql 的 GROUP BY 子句中

我使用的代码重构方式

无法选择 Dijit 树的节点