关于extjs 在grid中添加按钮的问题,请教

abuzar 2009-03-04 10:33:00
我定义的ext grid如下:

function setGrid() {
var cm = new Ext.grid.ColumnModel([
{header:'ID',dataIndex:'id',hidden:true},
{header:'名',dataIndex:'title'},
{header:'sort',dataIndex:'fileComment'},
{header:'登陆者',dataIndex:'wfWaitUserName'},
{header:'所属',dataIndex:'wfWaitSecName'},
{header:'开始日',dataIndex:'wfCreateDate'}
]);

var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'WorkFlowListAction.do?dispatch=selectList'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalProperty',
root: 'root'
}, [
{name: 'id',mapping:'id',type:'string'},
{name: 'title',mapping:'title',type:'string'},
{name: 'fileComment',mapping:'fileComment',type:'string'},
{name: 'wfWaitUserName',mapping:'wfWaitUserName',type:'string'},
{name: 'wfWaitSecName',mapping:'wfWaitSecName',type:'string'},
{name: 'wfCreateDate',mapping:'wfCreateDate',type:'string'}
])
});

var pagingtoolbar = new Ext.PagingToolbar({
pageSize:3,
store:ds,
displayInfo:true,
emptyMsg:""
})

var grid = new Ext.grid.GridPanel({
store:ds,
cm: cm,
loadMask: {msg:"NOW LOADING……"},
region: 'center',
enableHdMenu:false,
enableColumnHide:false,
height:200,
width:800,
renderTo:"reservationlist",
bbar:pagingtoolbar
});

ds.load({params:{start:pagingtoolbar.getPageData().activePage - 1,limit:pagingtoolbar.pageSize}});
}

请问我如何才能在这个grid的每一行加上加一个按钮列?
...全文
10563 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeujeujeu 2011-08-11
  • 打赏
  • 举报
回复
请看http://www.showframework.com/post/59
suisui1990523 2011-05-10
  • 打赏
  • 举报
回复
引用:我想问一下大侠你的return " <button type='button' onclick='rMenu1Fn'>修改 </button>"处调用的那个rMenu1Fn方法在哪里定义的啊,我现在出现问题,这个方法只能在Ext.onReady()外面定义才行,??但是在外面定义我又取不到Ext.onReady()里面定义的那个gridPanel了,楼上的那个方法不行啊!有答案者请说下
haisyo 2010-10-22
  • 打赏
  • 举报
回复
添加一个Button分2个步骤:
1.添加Button的HTML代码,也就是Render
就Render而言,abuzar采用的方法完全没有问题。

2.添加该Button的事件处理函数。其中,gridPanel应作为参数传入该函数。

应该在gridPanel初始化时定义:
(1)cellClick的listener:cellClick
(2)cellClick事件的处理函数:onCellClick
------------------------------------------------------------
var grid = new Ext.grid.gridPanel(
{
store: ****,
colModel:****,


listeners:{
cellClick: this.onCellClick,
},

onCellClick: function(grid, rowIdx, colIdx, evt(){
/× 例1: 获得数据 ×/
//该行的数据
var record = grid.getStore().getAt(rowIdx);

//被Click的Cell的数据
var colName = grid.getColumnModel().getDataIndex(colIdx);
var cellValue = record.get(colName);

/*例2: 删除该行数据 */
var record = grid.getStore().getAt(rowIdx);
grid.getStore().remove(record);
grid.getView().refresh(); //-->看ExtJs版本,有的版本不需要调用此行
}
});
------------------------------------------------------------

上述可见,因为绑定的是grid的cellClick事件,
所以,该列不是button也可以完成相应的任务。




zgxfxm 2010-10-20
  • 打赏
  • 举报
回复
怎么不行呢 !!
youcunzai 2010-06-10
  • 打赏
  • 举报
回复
谢谢;俺也在找此功能
lg068 2009-11-24
  • 打赏
  • 举报
回复
renderer : function(value, cellmeta, record, rowIndex, columnIndex,store) {
//return " <button type='button' onclick='bt_ChangePassword'>修改密码 </button>" ;
return "<a href=\"javascript:showOrder97(\'"+columnIndex+"\')\"> 修改密码</a>";
}
我用了这样的方法
kaka200877 2009-09-03
  • 打赏
  • 举报
回复
我想问一下大侠你的return " <button type='button' onclick='rMenu1Fn'>修改 </button>"处调用的那个rMenu1Fn方法在哪里定义的啊,我现在出现问题,这个方法只能在Ext.onReady()外面定义才行,??但是在外面定义我又取不到Ext.onReady()里面定义的那个gridPanel了,比较急用希望能得到帮助
hundsun_2008 2009-03-30
  • 打赏
  • 举报
回复
function setGrid() {
var cm = new Ext.grid.ColumnModel([
{header:'ID',dataIndex:'id',hidden:true},
{header:'名',dataIndex:'title'},
{header:'sort',dataIndex:'fileComment'},
{header:'登陆者',dataIndex:'wfWaitUserName'},
{header:'所属',dataIndex:'wfWaitSecName'},
{header:'开始日',dataIndex:'wfCreateDate'}
{
header : "操作",
width : 150,
dataIndex : 'operation',
align : 'center',
renderer : function(value, cellmeta, record, rowIndex, columnIndex,store) {
return "<button type='button' onclick='rMenu1Fn'>修改</button>" +
"  <button type='button' onclick=''>废除</button>";
}
]);
Even713 2009-03-04
  • 打赏
  • 举报
回复
帮顶~
abuzar 2009-03-04
  • 打赏
  • 举报
回复
问题我解决了,谢谢大家帮忙,这100分就分给你们了
解决方法是:

function setGrid() {
var cm = new Ext.grid.ColumnModel([
// 追加
{header:"",dataIndex:"button",width:130,renderer:showbutton},

{header:'ID',dataIndex:'id',hidden:true},
{header:'名',dataIndex:'title'},
{header:'sort',dataIndex:'fileComment'},
{header:'登陆者',dataIndex:'wfWaitUserName'},
{header:'所属',dataIndex:'wfWaitSecName'},
{header:'开始日',dataIndex:'wfCreateDate'}
]);

function showbutton(value,cellmeta){
var returnStr = "<INPUT type='button' value='取消'>";
return returnStr;
}
wangju309 2009-03-04
  • 打赏
  • 举报
回复
ext不大熟悉,不过dojo里面column里面有属性指向一个方法,方法的返回值是自定义HTML,这样什么都可以定义了,ext应该类似吧,看看在grid渲染前可不可以加
abuzar 2009-03-04
  • 打赏
  • 举报
回复
谢谢。~~~~感动啊~~~!
快来个高手帮帮忙吧

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧