gridpanel添加按钮列和响应函数问题

[code="java"]{

header : 'hello',
dataIndex : ' ',
width : 100,
renderer: createButton
}[/code]
[code="java"]
function createButton(){
return "" ;
// return "添加 " ;
}

function addFn(){ 
alert('hello');
}

[/code]
[size=small][color=red]通过以上方法可以添加一列按钮,我想给按钮添加一个响应函数,用来弹出一个添加窗口,但按我代码中的这个方式提示addFn未定义,应该怎样添加响应函数呢?[/color][/size]
[b]问题补充:[/b]
[color=red][size=small]那几篇文章没怎么看明白,我想要的是通过点击这个添加按钮,弹出一个formpanel表单,并将按钮所在行的某一列的数据自动映射到表单的textfield中,怎么实现,代码应该怎么写?我想关键问题是2个,一是能响应函数,另一个是用什么方式传递参数,我不会。[/size][/color]
[b]问题补充:[/b]
[size=small][color=red]非常感谢你的热心解答,你的代码我试了,可以响应函数。我能不能将链接样式改为按钮的形式,应该怎么改,你的代码有些涉及html部分的语法不是很明白,不敢乱改。[/color][/size]
[b]问题补充:[/b]
[size=small][color=red]非常感谢你的指导。我再看看下面的参数传递问题怎么解决,有问题再请教。另外问一下,这个悬赏分怎么获得,快没分了,以后就没机会提问了啊。[/color][/size]

5个回答

下面摘抄自我以前的一些代码,你参考下吧:
首先是column的定义:
[code="javascript"]
{
header: '操作',
dataIndex: 'node',
renderer: function (value, meta, record) {
//在这里定义了3个操作,分别赋予不同的css class以便区分
var formatStr = "详细 | 签阅";
if (this.isAdmin) formatStr += " | 删除";
var resultStr = String.format(formatStr, record.get('id'), record.get('id'), record.get('id'));
return "

" + resultStr + "
";
}.createDelegate(this),
css: "text-align:center;",
width: 30,
sortable: false
}
[/code]

然后是事件:
[code="javascript"]
//单击事件
grid.on('cellclick', function (grid, rowIndex, columnIndex, e) {
var btn = e.getTarget('.controlBtn');
if (btn) {
var t = e.getTarget();
var record = grid.getStore().getAt(rowIndex);
var control = t.className;
switch (control) {
case 'alarm_detail':
this.showAlarmDetail(record.id);
break;
case 'alarm_check':
this.checkAlarm([record.id]);
break;
case 'alarm_delete':
this.deleteAlarm([record.id]);
break;
}
}
},
this);
[/code]

作用域问题.
onclick='addFn' 执行的是window全局作用域的addFun

而你的addFun是定义在某个闭包里面的

看[url]http://damoqiongqiu.iteye.com/blog/422202[/url]

一样的,只是下面用来匹配而已.
只是用到class='alarm_detail'这个来区分你点击的是哪个


详细

你可以改为

传递参数你就在this.showAlarmDetail(record.id); 这里做手脚就ok了.

不过要注意作用域

[code="java"]grid.on('cellclick', function (grid, rowIndex, columnIndex, e) {
//这里的作用于是this
},this);[/code]

积分的规则看问答首页右下角的

问题频道帮助

* 提问的智慧
* 如何获得积分及等级说明
* 如何关闭问题
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问