Ext gridPanel columns问题

看了一下API 好像columns的属性没有链接属性 我想实现一列的他的值都是“修改”当点击修改的时候 就会弹出window然后将form嵌入到window里面
具体代码如下:
columns:[
{header:"栏目编号",dataIndex:"lmbh",sortable:true},
{header:"链接编号",dataIndex:"ljbh",sortable:true},
{header:"链接名称",dataIndex:"ljmc"},
{header:"备注",dataIndex:"bz"},
{header:"查看BI",dataIndex:"lookBi"},
{header:"修改",dataIndex:"UpdateBi",renderer://当点击修改时弹出window
function(){return "修改";}
}]
[b]问题补充:[/b]
你的方法我想到了 但是因为test函数要执行window就必须放在EXT.ONReady()里面 这样的话这个window一开始就会弹出来 不会等到点击“修改”的时候再弹 你们遇到这种情况吗 是怎么解决的啊 谢谢啦
[b]问题补充:[/b]
问题来了 这样做可能不行 因为
{header:"修改",dataIndex:"UpdateBi",renderer://当点击修改时弹出window
function(){
return "修改";}
}
这样获取表了这一行的主键值啊!test()里面怎么接收ID值呢 哎
[b]问题补充:[/b]
那蔡 我就问你 你这个value是怎么得来的 他的值是谁的值?
[b]问题补充:[/b]
我认为大家给的参数不对 因为我是修改 我肯定是获取这条记录对应数据库段的ID 而不是这个EXT表格这个自己生产的ID 对吧 关键是对应数据库短的ID 怎么获取
[b]问题补充:[/b]
function(_value,_this,_data){var lmbh=_data.get("lmbh");return "修改";}
我这个lmbh怎么喘不过去啊 值都获取了的 就是传不过去 郁闷
[b]问题补充:[/b]
你这样也不行 老实语法错误 哎

[code="java"]function(_value,_this,_data){var lmbh=_data.get("lmbh");return "修改";} [/code]
这个当然传不出去,因为生成DOM的时候,这个lmbh系统跟本找不到。要改为
[code="java"]function(_value,_this,_data){var lmbh=_data.get("lmbh");return "修改";} [/code]
这样子,才能把值传给DOM的

改成这样就好了
columns:[
{header:"栏目编号",dataIndex:"lmbh",sortable:true},
{header:"链接编号",dataIndex:"ljbh",sortable:true},
{header:"链接名称",dataIndex:"ljmc"},
{header:"备注",dataIndex:"bz"},
{header:"查看BI",dataIndex:"lookBi"},
{header:"修改",dataIndex:"UpdateBi",renderer://当点击修改时弹出window
function(){
return "修改";}
}

]

function test()
{
定义window
}

"修改"
没用过这个。。。 :cry: :oops:
修改
[quote]
你的方法我想到了 但是因为test函数要执行window就必须放在EXT.ONReady()里面 这样的话这个window一开始就会弹出来 不会等到点击“修改”的时候再弹 你们遇到这种情况吗 是怎么解决的啊 谢谢啦 [/quote]
有你说的这个情况么?
function test()要放在EXT.ONReady()的外面才行,里面应该拿不到的吧。。。

要在renderer的function传参,给个示例
[code="js"]{header : '条款名称',
dataIndex : 'mc',
width : 150,
renderer : function(_value, _this, _data) {
var value = _data.get("t");
return "" + _value + "";
}
}[/code]

要更详细的看renderer方法的api

试试:
[code="java"]
...
function setIdCulomn(id,cellmeta,record,rowIndex,columnIndex,store){
return '修改';
}
function editRow(id)
{

//var url = 'xxx.jsp';
//window.open(url);
//alert(id);
new Ext.Window({id:'win',title:'修改窗口',width:600,height:480,html:'表单'}).show();
}
Ext.OnReady(function(){
...

columns:[
{header:"栏目编号",dataIndex:"lmbh",sortable:true},
{header:"链接编号",dataIndex:"ljbh",sortable:true},
{header:"链接名称",dataIndex:"ljmc"},
{header:"备注",dataIndex:"bz"},
{header:"查看BI",dataIndex:"lookBi"},
{header:"修改",dataIndex:"UpdateBi",renderer:setIdCulomn}
}]

...
});
...[/code]

晕,,你有没有看代码,又有没有看API。
[code="java"]renderer : function(_value, _this, _data) {

var value = _data.get("t");

return "" + _value + "";

} [/code]

value的值都是由从_data中取的,_value是这行相对应的reader中对应的值
_this不好意思忘了指什么,偶没用到。
_data就是reader中的值啊。。。。
你要去看看Ext.grid.ColumnModel中的renderer方法。

[code="java"]columns:[
{header:"栏目编号",dataIndex:"lmbh",sortable:true},
{header:"链接编号",dataIndex:"ljbh",sortable:true},
{header:"链接名称",dataIndex:"ljmc"},
{header:"备注",dataIndex:"bz"},
{header:"查看BI",dataIndex:"lookBi"},
{header:"修改",dataIndex:"UpdateBi",renderer://当点击修改时弹出window
function(_value,_this,_data){
var lmbh = _data.get("lmbh");
var ljbh = _data.get("ljbh");
就这么简单.

return "修改";}
}][/code]

[code="java"]...

function setIdCulomn(id,cellmeta,record,rowIndex,columnIndex,store){

return '修改';

}

function editRow(id)

{

//var url = 'xxx.jsp';

//window.open(url);

//alert(id);

new Ext.Window({id:'win',title:'修改窗口',width:600,height:480,html:'表单'}).show();

}

Ext.OnReady(function(){

...

columns:[

{header:"栏目编号",dataIndex:"lmbh",sortable:true},

{header:"链接编号",dataIndex:"ljbh",sortable:true},

{header:"链接名称",dataIndex:"ljmc"},

{header:"备注",dataIndex:"bz"},

{header:"查看BI",dataIndex:"lookBi"},

{header:"修改",dataIndex:"UpdateBi",renderer:setIdCulomn}

}]

...

});

... [/code]

setIdCulomn方法中的参数id就是你UpdateBi的值,id只是一个参数名,你定义时可以写成其它名字,record对应的就是你这行的数据,比如record.data.UpdateBi就是id的值了,还可以record.data.bz这样来取得该行的备注列的值,其他的列都是一样