ext proerptyGrid-属性表格
来源:互联网 发布:旺旺id是淘宝昵称吗 编辑:程序博客网 时间:2024/05/29 08:21
用ext proerptyGrid 做的属性表格,可以切换source和customEditors,并监听textFiled弹出窗口
用ext proerptyGrid 做的属性表格,可以切换source和customEditors,并监听textFiled弹出窗口。
var propsGrid = null;
Ext.onReady(function(){
propsGrid = new Ext.grid.PropertyGrid({
el:'props-grid',
//nameText: 'Properties Grid',
width:300,
autoHeight:true,
viewConfig : {
forceFit:true,
scrollOffset:2 // the grid will never have scrollbars
},
clicksToEdit : 1,
source:{
"id": "111111",
"类型": "流程",
"流程类别": "请假",
"名称": "请假流程",
"描述": "sss",
"版本号": 1,
"执行监听": "{'totalProperty':1,'items':[{'comboBox':'start','name':'赵丽蓉'}]}"
},
customEditors:{
"id":new Ext.grid.GridEditor(new Ext.form.TextField({disabled:true})),//disabled:true设置编辑器不可编辑
"类型":new Ext.grid.GridEditor(new Ext.form.TextField({disabled:true})),
"版本号":new Ext.grid.GridEditor(new Ext.form.TextField({disabled:true})),
"流程类别": new Ext.grid.GridEditor(new Ext.form.ComboBox({
//editable:false,
displayField:"name",
mode:'local',
triggerAction:'all',
store:new Ext.data.SimpleStore({
fields:['name'],
data:[["请假"],["报销"],["财务"]]
})
})),
"描述":new Ext.grid.GridEditor(new Ext.form.TextField({
listeners:{
focus:function(){
getDesc();
}
}
})),
"执行监听": new Ext.grid.GridEditor(new Ext.form.TextField({
listeners:{
focus:function(){
getListenerWin();
}
}
}))
}
});
propsGrid.render();
});
function modifyGridSource(){
alert("modifyGridSource");
propsGrid.setSource({
"id":"2222222",
"类型":"开始事件",
"版本号":1,
"描述":"xxx",
"结束时间":new Date(Date.parse('03/13/2013')),
"名称":"开始事件",
"执行监听": "{'totalProperty':1,'items':[{'comboBox':'start','name':'张三'}]}"
});
propsGrid.customEditors = {
"id":new Ext.grid.GridEditor(new Ext.form.TextField({disabled:true})) , //disabled:true设置编辑器不可编辑
"类型":new Ext.grid.GridEditor(new Ext.form.TextField({disabled:true})),
"版本号":new Ext.grid.GridEditor(new Ext.form.TextField({disabled:true})),
"描述":new Ext.grid.GridEditor(new Ext.form.TextField({
listeners:{
focus:function(){
getDesc();
}
}
})),
"执行监听": new Ext.grid.GridEditor(new Ext.form.TextField({
listeners:{
focus:function(){
getListenerWin();
}
}
}))
}
}
function getListenerWin(){
//监听窗口
var data=[];
//选择列
var comboData=[
['start','开始'],
['take','认领'],
['end','结束']
];
var comboStore=new Ext.data.SimpleStore({
data:comboData,
fields:['value','text']
});
var comboBox=new Ext.form.ComboBox({
id:'cb',
store:comboStore,
triggerAction:'all',
displayField:'text',
valueField:'value',
mode:'local',
//readOnly:true,
emptyText:'请选择'
});
var cm=new Ext.grid.ColumnModel([{
header:'选择列',
dataIndex:'comboBox',
editor:new Ext.grid.GridEditor(comboBox)
},{
header:'姓名',
dataIndex:'name',
editor:new Ext.grid.GridEditor(new Ext.form.TextField())
}]);
var store=new Ext.data.Store({
proxy:new Ext.data.MemoryProxy(data),
reader:new Ext.data.ArrayReader({},[
{name:'comboBox'},
{name:'name'}
]),
pruneModifiedRecords:true//如果为true,每次进行remove和load操作时,store会自动清除modified标记.可以避免出现下次提交时还会把上次那些modified信息都带上的现象
});
store.load();
//这里定义一个MyRecord类
var MyRecord=new Ext.data.Record.create([
{name:'comboBox',type:'string'},
{name:'name',type:'string'}
]);
btn_add=function(){
//单击添加按钮,添加一个空行(首先新建一个MyRecord,记得给里面的属性赋值,否则EditorGrid最后显示的内容会混乱)
var p=new MyRecord({
comboBox:'',
name:''
});
grid.stopEditing();//关闭表格的编辑状态
store.insert(0,p);//把我们刚才创建的MyRecord放到表格的第一行
grid.startEditing(0,0);//激活第一行第一列的编辑状态
}
btn_delete=function(){
var sm=grid.getSelectionModel();//获取表格的选择模型
var cell=sm.getSelectedCell();//从选择模型中获取选中的单元格,这个单元格有两个属性,一个是行号,一个是列号
if(cell != null && cell != undefined){
Ext.Msg.confirm('提示','确定要删除?',function(btn){
if(btn=='yes'){
var record=store.getAt(cell[0]);//通过行号得到store这一行对应的Record,然后移除即可
store.remove(record);
}
});
}else{
Ext.Msg.alert("警告","请选中要删除的行!");
}
}
//这里不是GridPanel,而是EditorGridPanel
var grid=new Ext.grid.EditorGridPanel({
id:'grid',
cm:cm,
store:store,
clicksToEdit:1,
width:430,
height:270,
scrollbars:true,
//renderTo:'editor-grid',
tbar:new Ext.Toolbar({
height:25,
items:[
{
text:'添加一行',
handler:btn_add
},"-",{
text:'删除一行',
handler:btn_delete
}]
})
});
return new Ext.Window({
id:'listenerWin',
layout : 'fit',
width : 450,
height : 300,
resizable:false,
closeAction : 'hide',
plain : true,
title : '执行监听',
modal:true,
items : [grid],
listeners:{
beforerender:function(){ //将值渲染到文本框上
var listenVal = propsGrid.getStore().getById("执行监听").get("value");
var items = Ext.decode(listenVal).items;
Ext.each(items,function(item,i){
var comboBox1 = items[i].comboBox;
var name1 = items[i].name;
var dataArr = [];
dataArr.push(comboBox1);
dataArr.push(name1);
data.push(dataArr);
});
store.load();
}
},
buttonAlign:'center',
buttons : [{
text : '保存',
disabled : false,
handler : function() {
var m=store.modified.slice(0);//获取store中修改过的数据,放到jsonArra数组中
//把这些数据组装成简单的数组.两种方发:第一种.因为数组m里保存的是Record,而不是简单的对象,只需要去除Record的data属性即可,
//然后使用循环将data添加到数组中 第二种.使用each()函数.each()的作用是遍历array,并对每项分别调用fn函数,如果array不是数组,
//则只执行一次.如果某项调用fn后结果返回false,那么遍历将结束并退出.
var jsonDatas = Ext.decode(propsGrid.getStore().getById("执行监听").get("value"));
var jsonArray = jsonDatas.items;
Ext.each(m,function(item,i){
var jsonData = {comboBox:item.data['comboBox'],name:item.data["name"]};
jsonArray.push(item.data);
});
var json = {totalProperty:m.length+jsonDatas.totalProperty,items:jsonArray};
var record = propsGrid.getStore().getById("执行监听");
record.set("value", JSON.stringify(json));//写入映射后的值
record.commit();//执行修改
alert(propsGrid.getStore().getById("执行监听").get("value"));
Ext.getCmp('listenerWin').destroy();
}
}, {
text : '关闭',
handler : function() {
Ext.getCmp('listenerWin').destroy();
}
}]
}).show();
}
function getDesc(){
//描述窗口
return new Ext.Window({
id:'descWin',
layout : 'fit',
width : 350,
height : 200,
resizable:false,
closeAction : 'hide',
plain : true,
title : '描述',
modal:true,
items : [new Ext.form.TextArea({
id:'desc',
hideLabel:true
})],
buttonAlign:'center',
listeners:{
beforeshow:function(){
var descVal = propsGrid.getStore().getById("描述").get("value");
alert(descVal);
alert(Ext.getCmp("desc").id);
if(descVal != null && descVal != ""){
Ext.getCmp("desc").setValue(descVal);
}
}
},
buttons : [ {
text : '保存',
disabled : false,
handler : function() {
var desc = Ext.getCmp("desc").getValue();
//将弹出框上的内容回显在textFiled
var record = propsGrid.getStore().getById("描述");
record.set("value", desc);//写入映射后的值
record.commit();//执行修改
Ext.getCmp('descWin').destroy();
}
}, {
text : '关闭',
handler : function() {
Ext.getCmp('descWin').destroy();
}
}]
}).show();
}
- ext proerptyGrid-属性表格
- 用ext proerptyGrid 做的属性表格,可以切换source和customEditors,并监听textFiled弹出窗口
- Ext属性表格控件——PropertyGrid
- EXT表格
- EXT表格
- ExtJS 普通表格:Ext.grid.GridPanel属性祥解
- ExtJS 普通表格:Ext.grid.GridPanel属性祥解
- ExtJS 普通表格:Ext.grid.GridPanel属性祥解
- ExtJS 普通表格:Ext.grid.GridPanel属性祥解
- Ext Js 3.2中表格的常见操作,主要是对表格属性的修改
- EXT 属性
- Ext GridPanel基本表格
- EXT实现表格显示
- EXT Grid表格分页
- Ext 表格 重载数据
- Ext 表格的操作
- ext表格数据显示
- Ext表格分页
- 【CS231n Winter 2016 Lecture 2 (Image classifier,NN/KNN/linear classifier)】
- Java NIO原理 图文分析及代码实现
- Java Web 伪静态
- 一个开始
- Anootations框架使用详解
- ext proerptyGrid-属性表格
- azure machine learning 预测分类实例-- 预测出口国
- JavaScript—requestAnimationFrame
- 230. Kth Smallest Element in a BST
- linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent_helper
- 使用jni实现在C语言中打印log信息
- CodeForces 554AKyoya and Photobooks
- Java中equals和==的区别 (详解)
- 解决本地多个ssh key问题