您的位置:首页 > 其它

DataGrid关于button的相关操作

2011-11-23 16:24 232 查看
这两天做相关设计,需要使用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;

}

}

这算是主要的问题点,记下来,下次再遇到就能解决为题了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: