日期:2014-05-16  浏览次数:20426 次

Ext js 如何获取gird某一列中的按钮,并设置其属性!!!
我的ext js 表格代码如下:
var smsLogPackages=new Ext.grid.ColumnModel([
//自动显示行号
new Ext.grid.RowNumberer(),
{header:'主键',dataIndex:'id',width:10,hidden:true,sortable:true},
{header:'对应商户ID',dataIndex:'merchantId',width:10,hidden:true},
{header:'发送时间',dataIndex:'sendDate',width:120,sortable:true},
{header:'发送数目',dataIndex:'allCount',width:80},
{header:'成功数目',dataIndex:'success'},
{header:'操作',dataIndex:'merchantId',align:'center',renderer:renderqueryall},
{header:'状态',dataIndex:'messageId',align:'center',renderer:renderjudgestate}
]);


对于状态这一列,会进行一些判断,如果不符合条件就在这一列显示一个按钮,按钮代码:

function renderjudgestate(value,cellmeta,record,rowIndex,columnIndex,store){
if(value==null || value == ''){
return "<span style='color:red'>发送失败</span>";
}
else{
var messageId = record.get('messageId'); 
var merchantId = record.get('merchantId');
return "<input type='button' id='rtnbtn' onclick='returnSms(\""+messageId+"\",\""+merchantId+"\","+rowIndex+","+columnIndex+");' value='返还短信' />";
}
}

现在的问题是,我希望点击按钮之后执行ajax,返回成功时设置它的属性,把它变为disabled,不可使用状态,怎么解决。
按钮事件代码:
returnSms = function(messageId,merchantId,rowIndex,columnIndex){
var compo= smsLogPackages.getColumnModel().getCellEditor(columnIndex, rowIndex);   //怎么获取不到按钮控件????
Ext.Ajax.request({
  url: Constant.ROOT_PATH + '/admin/returnSms.do',
method: 'POST',
params: {messageId: messageId,merchantId:merchantId},

success: function(resp) {
var json = Ext.decode(resp.responseText); 
showInfo(json.msg);
store.reload();
?????  这里面如何设置按钮属性,怎么获取按钮
},
failure: function(resp) {
  var json = Ext.decode(resp.responseText);  
if(json != undefined) showErr(json.msg);
else showErr(Constant.MSG_ERR);             
}
  });
};

希望路过的朋友帮忙看一下,先谢谢大家呀!
------解决方案--------------------
现在在家里无法测试,看了一下
var compo= smsLogPackages.getColumnModel().getCellEditor(columnIndex, rowIndex);
获取到的应该是整个cell吧。你再.down('button')试试。

再给lz讲一个肯定可以的笨办法。就是在render里面把每个button的id指定一下,格式可以选择前缀+rowIndex,
你在需要获取的时候只要知道rowindex就可以通过document.getElementById()获取到啦。哈哈