DataGrid关于button的相关操作

本文记录了在使用DataGrid时如何动态生成含有按钮的单元格,并解决按钮点击事件无法正确触发的问题。通过使用formatter函数和Dojo查询来绑定事件,实现了对每个按钮的独立操作,包括弹出dialog。同时分享了DataGrid的一些常用操作,如获取选中项、修改cell值、添加和删除item等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天做相关设计,需要使用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;
    }

}

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



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值