ItemFileWriteStore vs dojo.store.Memory?



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

我正在使用弹簧 2.5 作为控制器。

这个问题不一定有"正确"的答案,但这里有一些事情需要考虑。

dojo/store API 旨在成为下一步,取代dojo/data . 因此,建议从最佳/现代实践的角度dojo/store

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

  • 使用dojo/data/ItemFileWriteStore
  • 使用包装在dojo/data/ObjectStore中的dojo/store/Memory(它使用dojo/data API 包装dojo/store,以便旧商店的消费者可以使用它)

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

主要感谢 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);
    }
}

最新更新