关于EXT中给FORM填充数据的问题

这里有个需求,在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:表格对象
  • updateWin:新修改窗口 */ var sl = grid.getSelectionModel().getSelections(); updateWin = sl.loadRecord(sl[0]);

利用
grid.getSelectionModel().getSelected()
取得选中的行对应的record
然后调用 form的 loadRecord 方法 就可以了
很简单的.