这里有个需求,在GRID里选中一行数据,点GRID的TBAR上的一个按钮会弹出一个带有FORM的WINDOW,问题是怎么把选中的那行数据填充到FORM里
难点在于取数据,看代码:
分别得到这一行和指定单元格的数据。
var recode = grid.getSelectionModel().getSelected();
var row= recode.data // get the hash of the row
var feild=recode.get("columName") // get the value of the cell
至于拼装弹出框,就比较简单了,弹出一个formPanel的window。里面有个字段显示你的数据,而默认数据就是你从grid的recode中取得的。
我采用的是根据id重新加载一次数据。
使用了一些面向对象的封装,希望你能看得懂。哇哈哈~
[code="java"]
// 全局变量,只创建一次YourWindowWrap
var windowWrap;
// 选择记录点击
function updateARecord() {
var record = grid.getSelected();
if(!windowWrap){
windowWrap = YourWindowWrap("Upate A Record");
}
windowWrap.show(record.get("id"));
}
// Window
YourWindowWrap = function(title) {
var formWrap = new YourFormWrap();
var win = new Ext.Window({ title: title, width: 700, height:350, items: formWrap.getForm() });
return {
show: function(id) {
win.show();
formWrap.load(id); // 显示window的同时加载数据
}
}
}
// Form
YourFormWrap = function() {
// 内部变量
var form = new Ext.form.FormPanel...
// 接口
return {
load : function(id) {
// form load record from db by id;
},
getForm : function() {
return form;
}
}
}
[/code]
/**
利用
grid.getSelectionModel().getSelected()
取得选中的行对应的record
然后调用 form的 loadRecord 方法 就可以了
很简单的.