Dojo中datagrid刷新实现

当针对datagrid数据做修改是需要对datagrid(dojox.grid.EnhancedGrid)做更新,Dojo中datagrid没有refresh类的方法

下面在增删改例子中简单实现数据更新:

增加操作:

function addObject(){
        var form = dojo.byId("myForm");

        var xhrArgs = {
            form: form,
            load: function(data){
                if(data=="100"){
                    store.newItem({id:form.id.value,channelName:form.channelName.value});
                }
            },
            error: function(error){
                console.log(error);
            }
        }
        var deferred = dojo.xhrPost(xhrArgs);
}

当新建数据提交服务器成功后,通过store.newItem方法将对象添加到datagrid的store中

 

修改对象:

function editObject(id){
        var form = dojo.byId("myForm");
        var xhrArgs = {
            form:form,
            load: function(data){
                console.log("edit ok:"+id)
                store.fetchItemByIdentity({
                    identity: id,
                    onItem: function(item){

                        if(item){

                           store.setValue(item,"channelName",form.channelName.value);

                        }
                    }
                });
          
            },
            error: function(error){

            }
        }
        var deferred = dojo.xhrPost(xhrArgs);

    }

当修改操作提交服务器成功后,通过store.setValue方法更新数据。

 

删除对象:

function deleteObject(id){
        if(confirm("确定要删除此记录?")) {
            var xhrArgs = {
                url:APP_CONTEXT_PATH+"/channel/delete/"+id,
                handleAs: "json",
                load: function(data){
                    store.fetchItemByIdentity({
                        identity: id,
                        onItem: function(item){
                            if(item){
                                try{store.deleteItem(item);}catch(err) {}

                            }
                        }
                    });
                },
                error: function(error){

                }
            }
            var deferred = dojo.xhrGet(xhrArgs);
        }
    }

服务器删除成功后调用store.deleteItem方法删除store中的数据。

本地刷新可以避免重复调用服务器,减少对服务器请求次数

发表评论

电子邮件地址不会被公开。 必填项已用*标注