大家好,这个程序,有两处(?????????的地方)有问题,第一处我是想,动态改变form里textfiled的readOnly属性
第二处我是想,删除用户选择的记录。
Ext.onReady(function(){
//当超级管理员点击 "详情" 按钮时,弹出所需要的窗口
//record 将用户选中的Record对象,放到record中,然后在放到form里
function showWindowForm(text) {
//直接取得选中的行对应的record
var record = grid.getSelectionModel().getSelected();
if(!record&&(text!="tianJia")){
Ext.Msg.alert('信息','请选择要编辑的数据');
return;
}
win.show(Ext.get(text));
if(text!="tianJia")
form.getForm().loadRecord(record);
}
//当点击"添加"、"修改"按钮时,隐藏的form的"确定"按钮显示出来、并同时将"取消"按钮换回来,还要form中的所有textfield元素进入可编辑状态。而当点击"详情"按钮,则反之。
function setFormButton(text) {
form.items.each(function eachItem(item,index,length){
if(item.isXType("textfield")){
if(text=="xiangQing")
item.readOnly=true; //有时这个设置有用,可有时他也没用。不过下面的Button的设置,保证了程序的安全性?????????????????????????
else
item.readOnly=false;
}
if (item.items && item.items.getCount() > 0) {
item.items.each(eachItem, this);
}
},this);
if(text=="xiangQing")
win.buttons[0].hide();
else
win.buttons[0].show();
if(text=="xiangQing")
win.buttons[1].setText("确定");
else
win.buttons[1].setText("取消");
}
//定义store读取数据的格式
var DepartmentRecord = new Ext.data.Record.create([
{name: 'id',type: 'int'},
{name: 'name',type: 'string'},
{name: 'description',type: 'string'}
]);
//定义行选择模式
var sm = new Ext.grid.CheckboxSelectionModel();
//定义grid的列模式
var cm = new Ext.grid.ColumnModel([
sm,
{header:'名称',dataIndex:'name'},
{header:'描述',dataIndex:'description'}
]);
var store = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'../servlet/DepartmentType_list'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalCount',
root: 'result'
}, DepartmentRecord)
});
//grid 设置 start
var grid = new Ext.grid.GridPanel({
region: 'center',
title: "系部类型列表",
autoHeight: true,
store: store,
cm: cm,
sm: sm,
loadMask: {
msg: "正在载入,请稍等。。。。。"
},
viewConfig: {
forceFit: true //表格会自动延展每列的长度,使内容填满整个表格
},
tbar: new Ext.Toolbar(
['-',{
text: '详情',//当超级管理员点击某一行,再点击此按钮,弹出"详情"窗口
id: 'xiangQing',
handler: function(){ showWindowForm("xiangQing");setFormButton("xiangQing") }
},'-',{
text: '添加',
id: 'tianJia',
handler: function() { showWindowForm("tianJia");setFormButton("tianJia") }
},'-',{
text: '修改',
id: 'xiuGai',
handler: function() { showWindowForm("xiuGai");setFormButton("xiuGai") }
},'-',{
text: '删除',
handler: function() {
var record2 = grid.getSelectionModel().getSelected();
if(!record2) {
Ext.Msg.alert("信息","请选择您要删除的信息。");
}
else {
form.getForm().loadRecord(record2);
Ext.Msg.confirm('确认对话框','你确定要删除这行信息吗?',function(btn) { //难道仅仅是因为 form 在 win 里,而不在 grid 里
if(btn=='yes') {
form.getForm().submit({ //就出现 form.getForm().findField("id") 为空或不是对象
url: '../servlet/DepartmentType_delete', //等问题吗。???????????????????????????
success: function(f,action) {
if(action.result.success) {
Ext.Msg.alert("信息",action.result.msg,function() {
grid.getStore().reload();
form.getForm().reset();//清空form上一次提交的数据
})
}
},
failure: function() {
Ext.Msg.alert("信息","操作失败");
}
})
}
});
}
}
},'-']),
bbar: new Ext.PagingToolbar({ //分页工具栏 start
pageSize: 10,
store: store,
displayInfo: true,//显示数据信息
displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
emptyMsg: "没有记录" //分页工具栏 end
})
});
// grid 设置 end
store.load({params:{start:0,limit:15}});
// form 设置 start
var form = new Ext.form.FormPanel({
labelAlign: 'right',
labelWidth: 40,
frame: true,
defaults: {
anchor: "90%",
allowBlank: false
},
height: 280,
width: 200,
defaultType: 'textfield',
items: [{
xtype: 'hidden',
name: 'id'
},{
fieldLabel: '名称',
id: 'name',
name: 'name'
},{
fieldLabel: '描述',
name: 'description',
xtype: 'textarea',
height:180,
maxLength: 127
}]
});
//form 设置 end
//定义所需窗口 window Start // window 设置 start 此窗口用于存放form
var win = new Ext.Window({
title: '浏览系部类型',
layout: 'fit',
width: 350,
height: 300,
closable: false, //隐藏关闭按钮
modal: true,
plain: true,
buttonAlign: 'center',
items:[form],
buttons: [{
text: '确定',
handler: function() {
if(!form.getForm().isValid()) {
return;
}
var id = form.getForm().findField('id').getValue();
if(id=='') {
form.getForm().submit({
url: '../servlet/DepartmentType_add',
success: function(f,action) {
if(action.result.success) {
Ext.Msg.alert("信息",action.result.msg,function() {
grid.getStore().reload();
form.getForm().reset();
win.hide();
});
}
},
failure: function() {
Ext.Msg.alert("信息","添加失败");
}
});
}
else {
form.getForm().submit({
url: '../servlet/DepartmentType_fix',
success: function(f,action) {
if(action.result.success) {
Ext.Msg.alert("信息",action.result.msg,function() {
grid.getStore().reload();
form.getForm().reset();//清空form上一次提交的数据
win.hide();
});
}
},
failure: function() {
Ext.Msg.alert("信息","修改失败");
}
})
}
// win.hide();
}
},{
text: '取消',
handler: function() {
form.getForm().reset();
win.hide();
}
}]
});
// //定义所需窗体 window 设置 end
var _viewport = new Ext.Viewport({
layout: 'border',
items: [grid]
});
});