Extjs EXT js网格有一列单选按钮
我有一个ext js网格,如下所示:Extjs EXT js网格有一列单选按钮,extjs,Extjs,我有一个ext js网格,如下所示: var grid = new Ext.grid.GridPanel({ columns: [ {header: 'Account Id',dataIndex:'accountId' }, {header: 'Account NUmber',dataIndex:'accountNumber' } ] }) 现在我需要将accountid列显示为单选按钮列。因此,用户可以从网格中选择一个帐户Id并提交。当用户重新加载页面时,应该预先选择该帐户id 我需要一些关
var grid = new Ext.grid.GridPanel({
columns: [
{header: 'Account Id',dataIndex:'accountId' },
{header: 'Account NUmber',dataIndex:'accountNumber' }
]
})
现在我需要将accountid列显示为单选按钮列。因此,用户可以从网格中选择一个帐户Id并提交。当用户重新加载页面时,应该预先选择该帐户id
我需要一些关于如何继续这方面的帮助。我是否需要在帐户Id列上编写渲染器?还是有更简单的方法
编辑:我喜欢这样:
{header: 'Account Id',dataIndex:'accountId',renderer: function(value) {
return "<input type='radio' name = 'primaryRadio' " + (value ? "checked='checked'" : "") + ">";
}},
{标题:“帐户Id”,数据索引:“帐户Id”,呈现器:函数(值){
返回“”;
}},
将onclick事件或onchange事件添加到单选组的语法是什么?通过使用渲染器函数,您在将帐户Id列显示为单选按钮列方面做得很好 关于这些的onclick事件,您只需在HTML标记中添加onclick属性:
return "<input onclick='my_function()' type='radio' name = 'primaryRadio' " + (value ? "checked='checked'" : "") + ">";
返回“”;
基于前面的答案,是的,我认为为您的专栏使用渲染器是正确的解决方案。我认为你应该以不同于J.Bruni建议的方式来处理点击事件。我建议在网格面板上安装一个click监听器,检查您是否单击了单选按钮,并将其委托给网格面板中的方法
大概是这样的:
MyRadioGrid = Ext.extend(Ext.grid.GridPanel, {
columns: [
{header: 'Account Id',dataIndex:'accountId', renderer: function(value) {
return "<input type='radio' name = 'primaryRadio' " + (value ? "checked='checked'" : "") + ">";
}},
{header: 'Account NUmber',dataIndex:'accountNumber' }
],
afterRender: function() {
MyRadioGrid.superclass.afterRender.apply(this, arguments);
this.el.on('click', this.checkRadioClick, this);
},
checkRadioClick: function(event) {
if (event.getTarget('input[type="radio"]')) {
//radio clicked... do something
}
}
});
MyRadioGrid=Ext.extend(Ext.grid.GridPanel{
栏目:[
{标题:“帐户Id”,数据索引:“帐户Id”,呈现程序:函数(值){
返回“”;
}},
{标题:'帐号',数据索引:'accountNumber'}
],
afterRender:function(){
MyRadioGrid.superclass.afterRender.apply(这是参数);
this.el.on('click',this.checkRadioClick,this);
},
checkRadioClick:功能(事件){
if(event.getTarget('input[type=“radio”]”){
//收音机响了…做点什么
}
}
});
你能把它作为答案贴出来让我接受吗?:)+1这比在每个元素中设置
onclick
要好。只是看起来有点冗长。。。我们是否有一种更短/更干净的方法来附加事件处理程序?类似于jQuery的$('#grid')。在('click','input[type=“radio”]',callback)上
或$('input.account\u id')。单击(回调)代码>(假设我们在输入中添加了一个“account\u id”类)…是的,jQuery用很少的代码做了很多事情:)。不过,在本例中,通常使用Ext时,最好将业务组件包装为扩展Ext组件的类,Ext组件是我上面编写的大部分代码。较短的版本没有创建整个类,只是类似于myGrid.el.on('click',functionToCheckForRadio)
,然后仍然需要事件.getTarget
逻辑。我不知道在Ext中有任何基于点击的目标过滤事件的快捷方式,尽管这听起来像是一个不错的扩展!