做的一个项目,需要在选中ExtJS Grid中的一行时,点击修改按钮弹出的ExtJS窗口的FromPanel中填充选中行的json数据。
实现方法,先得到Grid选中行的数据
//点击选中行,得到其json对象,赋给全局变量data
grid.getSelectionModel().on('rowselect', function(sm, rowIdx, r){
qTitleId = r.data.id;
alert("id:" + Ext.util.JSON.encode(r.data));
data = r.data;
});
//定义一个弹出窗体的方法
function openDialog(){
Ext.useShims=true;
var win=new Ext.Window(
{title:"新增",
width:370,
height:200,
modal:true,
closeAction:"close",
layout:"fit",
items:[
new Ext.FormPanel({
id:"formPanel",
frame:true,
x:40,
y:30,
labelAlign:"right",
labelWidth: 85,
width:360,
height:400,
border:false,
waitMsgTarget: true,
// region:"west",
reader : new Ext.data.JsonReader({
//root:'showInfoList'
}, [
{name:'id',mapping:'id',type:'int'},
{name:'Qtitle',mapping:'Qtitle'},
{name:'isCheckBox',mapping:'isCheckBox'},
{name:'isAvalible',mapping:'isAvalible',type:'int'}
]),
items: [
new Ext.form.FieldSet({
title: '问卷调查标题',
width:340,
autoHeight: true,
defaultType: 'textfield',
items: [{
fieldLabel: 'ID',
//emptyText: '如stam.qq.com',
name: 'id',
allowBlank: false,
width:190,
hidden:true
},{
fieldLabel: '标题名',
name: 'Qtitle',
allowBlank: false,
width:190
},
new Ext.form.ComboBox({
fieldLabel: '选择模式',
hiddenName:'isCheckBox',
allowBlank:false,
//blankText:'不能为空',
store: new Ext.data.ArrayStore({
fields: ['abbr', 'isCheckBox'],
data : [
[0,'单选'],
[1,'多选']]
}),
valueField:'abbr',
displayField:'isCheckBox',
typeAhead: true,
mode: 'local',
triggerAction: 'all',
selectOnFocus:true,
width:190
})
,
new Ext.form.ComboBox({
fieldLabel: '是否可用',
hiddenName:'isAvalible',
allowBlank:false,
blankText:'不能为空',
store: new Ext.data.ArrayStore({
fields: ['abbr', 'isAvalible'],
data : [
[0,'否'],
[1,'是']]
}),
valueField:'abbr',
displayField:'isAvalible',
typeAhead: true,
mode: 'local',
triggerAction: 'all',
selectOnFocus:true,
width:190
})
]
})
]
})
],
buttons:[{
text:"确认",handler:function(){
}}, {
text:"取消",handler:function(){
win.close();
}
}]
});
win.show();
//点击右上角的关闭按钮后
win.on("close",function(){
});
}
//修改按钮的事件
var centerPanel = new Ext.Panel({
id:"centerPanel",
title:"问卷调查标题",
layout:"fit",
region:"center",
//width:"75%",
tbar:[//定义顶部工具栏
{
id:'updatenode',
text: '修改',
iconCls : 'option',
//pressed : true,
handler : function(){
if(qTitleId == 0){
Ext.Msg.alert("提示","请选择修改行");
}else{
openDialog();
alert(data);
Ext.getCmp("formPanel").form.loadRecord(new Ext.data.MemoryProxy(data));//为表单赋值
}
}
}],
items:[
grid
]
});