wbr2005
wbr2005
2009-09-02 12:18

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条回答

  • iteye_10013 iteye_10013 12年前

    下面摘抄自我以前的一些代码,你参考下吧:
    首先是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]

    点赞 评论 复制链接分享
  • iteye_10013 iteye_10013 12年前

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

    不过要注意作用域

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

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

    问题频道帮助

    * 提问的智慧
    * 如何获得积分及等级说明
    * 如何关闭问题
    
    点赞 评论 复制链接分享
  • iteye_10013 iteye_10013 12年前

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


    详细

    你可以改为

    点赞 评论 复制链接分享
  • iteye_10013 iteye_10013 12年前
  • iteye_10013 iteye_10013 12年前

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

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

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

    点赞 评论 复制链接分享

相关推荐