我在Extjs很新,急需帮助!!我已经做了一些研究,并试图寻找解决方案2天,并没有找到解决我的问题!我的问题如下:
我正在尝试创建包含3列组合框的网格。第一列将有一个组合框,可以禁用/启用其中的其他combox!当我在第一列中更改组合框时,第二列和第三列中的组合框都会发生变化!我不希望发生这种情况我只想改变行!
我希望这有道理吗?如何在网格中的特定位置找到组合框并更改其配置?
谢谢大家!!!!!
这是我到目前为止的...这是我所有组合框的格式:...
/***************/
/* COMBO BOXES */
/***************/
//PROTOCOL COMBO BOX!
var protocol_cbox = new Ext.form.ComboBox({
typeAhead: true,
triggerAction: 'all',
// lazyRender: true ,
mode: 'local',
store: new Ext.data.ArrayStore({
id: 0,
fields: [
'myId',
'displayText'
],
data: [[1, 'Ethernet'], [2, 'Serial']]
}),
valueField: 'myId',
displayField: 'displayText',
});
这是我的选择模型......
/****************/
/* COLUMN MODEL */
/****************/
var rownum = new Ext.grid.RowNumberer();
var grid_column_model = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
{header: "Program", dataIndex: "program", align: 'center', width: myGridColumnWidth/2, editor: program_tbox},
{header: "Protocol", dataIndex: "Protocol", align: 'center', width: myGridColumnWidth/2, editor: protocol_cbox, renderer: Ext.util.Format.comboRenderer(protocol_cbox)},
{header: "Hostname", dataIndex: "hostName", align: 'center', width: myGridColumnWidth/2, editor: hostname_tbox},
{header: "Port", dataIndex: "Port_E", align: 'center', width: 100, editor: port_tbox},
{header: "Device", dataIndex: "Port_S", align: 'center', width: 100, editor: device_tbox},
{header: "Baud", dataIndex: "Baud", align: 'center', width: 100, editor: baud_cbox, renderer: Ext.util.Format.comboRenderer(baud_cbox)},
{header: "Data Bits", dataIndex: "DataBits", align: 'center', width: myGridColumnWidth/2, editor: dataBits_cbox, renderer: Ext.util.Format.comboRenderer(dataBits_cbox)},
{header: "Parity", dataIndex: "Parity", align: 'center', width: myGridColumnWidth/2, editor: parity_cbox, renderer: Ext.util.Format.comboRenderer(parity_cbox)},
{header: "Stop Bits", dataIndex: "StopBits", align: 'center', width: myGridColumnWidth/2, editor: stopBits_cbox, renderer: Ext.util.Format.comboRenderer(stopBits_cbox)},
{header: "Flow Control", dataIndex: "FlowControl", align: 'center', width: 125 , editor: flowControl_cbox, renderer: Ext.util.Format.comboRenderer(flowControl_cbox)}
]);
最后这是我的处理函数! ........
//DISABLE OR ENABLE CBOX HANDLER
function hide_unhide(){
for(i=0; i<= store.getCount() - 1; i++){
if(store.getAt(i).data.Protocol== 1){
baud_cbox.setDisabled(false);
} else {
baud_cbox.setDisabled(true);
}
}
}
答案 0 :(得分:0)
如果禁用组合框,则会在该列的所有单元格中禁用它,因为每列只有一个编辑器(在本例中为组合框),用于所有行。< / p>
如果要为特定行禁用组合框,我建议您在网格上的beforeedit事件中添加一个监听器,以便在编辑开始之前启用/禁用组合框:
listeners: {
beforeedit: function(e) {
var condition = e.record.data.id == 1; // your condition here
combo2.setDisabled(condition);
combo3.setDisabled(!condition);
}
}