DataGrid关于button的相关操作

来源:互联网 发布:数据库定制 编辑:程序博客网 时间:2024/05/04 23:24

这两天做相关设计,需要使用grid,遇到一些问题,解决了,把经验写下来,与大家共勉!


实现目标内容会根据引入数据不同而出现不同的button,发现当直接写入value:<button></button>这种形式时,grid.cell会直接将起解释为文本,而不会翻译为html语言,查找资料后,引入formatter可以解决这个问题,使用formatter调用函数,在函数里定义一个包含button的string语句,return这个str,就可以在表格里动态生成相应的button。


不过在button动态点击后,弹出dialog,发现执行一次后,点击button无法在关联相应事件,使用很多方法后都无效。因为对button事件动态处理需要当前button下item,使用dojo.query链接事件时可以满足条件,但成功执行后无法再次关联事件,是这种方法不可取。而之前<input Onclick>方式却无法动态获得当前button的item。这种矛盾使程序一度陷入僵局(当然前提是使用datagrid)。最后查找资料,发现forrmate:function的调用方式传入参数可以有两个,当直接些formatter:fun1时,fun1(datum)中datum仅为field的值,但formatter:this.fun1时,fun1(item,datum),item为行号,使用getitem(item)可获得当前操作对象,datum仍未datum的值,可解决之前遇到的问题。


再给大家贴一下常用的griddata操作符:useGrid = new dojox.grid.DataGrid({【目标store】},‘id’);

useGrid._arrayOfTopLevelItems:得到所有的item

widget.selection.getSelected():得到选中情况下的item具体操作:    var items = usermanagerGrid.selection.getSelected();
    if (items.length) {
        dojo.forEach(items, function(selectedItem) {
            if (selectedItem !== null) {
                //alert(selectedItem.text);
                //
                var deleteid = usermanagerGrid.store.getValues(selectedItem, "id");
                deletemysql(deleteid);

                ukeymanagerGrid.store.setValue(selectedItem,'fieldname',newvalue);//改变某个item中cell的值

                useGrid.store.newItem(newItem);//添加信item

                useGridStore.deleteItem(selectedItem);//删除item


            }
        });
    }

//着下面是对formatter条用函数的引用

function func1(datum,item){
    if(datum==值)
    {
        //var str="<button class='info' >create</button>";  //这是旧的方式
        var str="<input type='button' value='create' onclick='new function(){createdialog("+item+");}'>";//可连续调用的方式
        return str;
    }

}

这算是主要的问题点,记下来,下次再遇到就能解决为题了!



原创粉丝点击