`
jaky821
  • 浏览: 42760 次
  • 性别: Icon_minigender_1
  • 来自: contry
文章分类
社区版块
存档分类
最新评论

ext表格

    博客分类:
  • ext
阅读更多
//工作人员
var ds_user = new Ext.data.Store({
baseParams : {
   "type" : 2
},
url : "/cbmUser.action",
reader : new Ext.data.JsonReader({
   root : "datas",
   totalProperty : "totalCount"
}, [{
   name : "id"
}, {
   name : "loginName"
}, {
   name : "commonName"
}, {
   name : "paperID"
}, {
   name : "unitName"
}])
});
//用户
var ds_item = new Ext.data.Store({

url : "find.action",
reader : new Ext.data.JsonReader({
   root : "datas",
   totalProperty : "totalCount"
}, [{
   name : "id"
}, {
   name : "loginName"
}, {
   name : "state"
}, {
   name : "localityName"
}])
});

//构建用户模块的checkbox模型
var sm_item = new Ext.grid.CheckboxSelectionModel();

//创建已选择的用户的记录
var selectUser = Ext.data.Record.create([{
name : 'id',
type : 'string'
}, {
name : 'name',
type : 'string'
}, {
name : 'state',
type : 'string'
}]);

//为用户模块添选择事件,并把选中的行的值添加到右边(checkedUserPanel)的列表
sm_item.on("rowselect", function(sm, rowIndex, record) {
var store = Ext.getCmp("selectedUser").store;
var no = store.find("id", record.get("id"));
if (no < 0) {
   store.add(new selectUser({
    id : record.get("id"),
    name : record.get("loginName"),
    state : record.get("state")
   }));
}
});

//为用户模块添反选事件,并把选中的行的值从右边(checkedUserPanel)列表中移除
sm_item.on("rowdeselect", function(sm, rowIndex, record) {
var store = Ext.getCmp("selectedUser").store;
var no = store.find("id", record.get("id"));
var recorded = store.getAt(no);
store.remove(recorded)
});

//构建用户模块的列名,并填充相应的数据
var cm_item = new Ext.grid.ColumnModel([sm_item, {
header : "ID",
width : 100,
dataIndex : "id",
sortable : true
}, {
header : "用戶名",
width : 100,
dataIndex : "loginName",
sortable : true
}, {
header : "状态",
width : 100,
dataIndex : "state",
renderer : stateDesc,
sortable : true
}, {
header : "所属机构",
width : 160,
dataIndex : "localityName",
sortable : true
}]);

//构建combox工作人员
var storeList = new Ext.form.ComboBox({
store : ds_user,
fieldLabel : "工作人员",

valueField : 'id', // option.value
typeAhead : true,
hiddenName:"task.owner.id",
name:'task.owner.id',
displayField :'loginName', // option.text
triggerAction : 'all',
emptyText : '选择一个工作人员...',
mode : 'local',
selectOnFocus : true,
width : 135,
listeners:{
   "change":function(){
  
    //alert(storeList.getValue());
  
   }
 
}
});

//构建搜索框
var s_cmb = new Ext.form.ComboBox({
id : 'cmb',
store : new Ext.data.SimpleStore({
   fields : ["condition", "value"],
   data : [[0, "按用户名搜索"], [1, "按状态搜索"], [2, "按单位名称搜索"]]
}),
fieldLabel:'搜索方式',
valueField : 'condition', // option.value
typeAhead : true,
hiddenName : "condition",
name : 'condition',
displayField : 'value', // option.text
triggerAction : 'all',
emptyText : '选择查找方式...',
mode : 'local',
listeners : {
   "select" : function(s_cmb, record, index) {
//    alert(Ext.getCmp("input").getValue());
   url:'find.action'
    ds_item.baseParams.condition = Ext.getCmp("cmb").value;
    ds_item.baseParams.id = Ext.getCmp("input").getValue();
    ds_item.load({
     url : "/dzqm/scripts/task/detail.js",
     waigMsg : "数据查找中,请稍候。。。 ",
     params : {
      start : 0,
      limit : 10
     }
    })

   }
}
});

//组装查询输入文本框跟搜索框
var searchForm = new Ext.form.FormPanel({
// height:300,
width:500,
defaultType : 'textfield',
layout : 'column',
items : [{
   fieldLabel : "查找条件",
   name : "id",
   id : 'input'
}, s_cmb]
});

//搜索form加入到panel
var searchPanel = new Ext.Panel({
layout : 'column',
width :500,
height:26,
items : searchForm
});

//组装用户的表格
var selectUserPanel =new Ext.grid.GridPanel({
   id : "selectUserGrid",
   title : "用户",
   height : 300,
   width : 500,
   store : ds_item,//结果集
   cm : cm_item,//ColumnModel
   sm : sm_item,//CheckboxSelectionModel

   //分页
   bbar : new Ext.PagingToolbar({
    pageSize : 10,
    store : ds_item,
    displayInfo : true,
    displayMsg : "当前显示 {0} - {1} 条&nbsp;&nbsp;&nbsp;&nbsp;共计 {2} 条",
    emptyMsg : "没有显示数据"
   })
})


//把搜索panel跟任务设置Panel组装到同一FormPanel
var taskDetailForm = new Ext.form.FormPanel({

labelWidth : 60,
bodyStyle : "padding: 30px;",
autoHeight : true,
method : "post",
defaultType : "textfield",

items : [{
   xtype : 'fieldset',
   title : '任务设置',
   collapsible : true,
   autoHeight : true,
   bodyStyle : 'padding:5px 5px 0;',
   defaultType : 'textfield',
   items : [storeList, new Ext.form.DateField({
    fieldLabel : '起始时间',
    name : 'task.start',
    format:"Y-m-d",
    width : 190,
    allowBlank : false
   }), new Ext.form.DateField({
    fieldLabel : '结束时间',
    format:"Y-m-d",
    name : 'task.end',
    width : 190,
    allowBlank : false
   })]
}, {
   xtype : 'fieldset',
   title : '用户列表',
   collapsible : true,
   autoHeight : true,
   width:800,
   height:890,
   bodyStyle : 'padding:5px 5px 0;',
   defaultType : 'textfield',
   items : [{
   fieldLabel : "查找条件",
   name : "id",
   id : 'input'
}, s_cmb,selectUserPanel]

}],
buttons : [{
   text : "保存",
   handler : function() {
    var array = new Array();
    array = userData();//取得右边选中用户的数组
    taskDetailForm.getForm().submit({
     url : "taskSave.action?users="+array,//提交到相应的Action
     waitMsg : "数据存储中,请稍侯...",
     success : function(frm, action) {
      Ext.Ajax.request({
       url : "/dzqm/scripts/task/detailView.js",
       success : function(result, request) {
        Ext.getCmp("selectedUser").destroy();//销毁右边的面板
        Ext.get("main").dom.innerHTML = "";
        eval(result.responseText);
        taskDetailPanel.render(Ext.get("main"));
      
       }
     
      });
     },
     failure:function(frm,action){
      Ext.MessageBox.hide();  
                    Ext.MessageBox.show({
                    title:'保存',
                    msg:"数据保存失败",
                    buttons:Ext.Msg.OK
                    });  
     }
    });
   }
}, {
   text : "重置",
   handler : function() {
    taskDetailForm.getForm().reset();
   }
}]

});

//整个中间的TabPanel,包含了任务设置,用户列表
var taskDetailPanel = new Ext.TabPanel({
activeTab : 0,
items : [new Ext.Panel({
   title : "新建任务",
   autoScroll : true,
   height : 400,
   items : taskDetailForm
})]
});

//构建选中用户的Store
var ds_selected = new Ext.data.Store({
reader : new Ext.data.JsonReader({
   root : "datas"
}, [{
   name : "id"
}, {
   name : "name"
}, {
   name : "state"
}]),

listeners : {
   "add" : function(store, records, options) {
   // store.reload;
   }
}
});

//构建选中用户列名,并添加相应的值
var cm_selected = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
header : "ID",
width : 40,
dataIndex : "id",
sortable : true
}, {
header : "用户名",
width : 50,
dataIndex : "name",
sortable : true
}, {
header : "状态",
width : 50,
dataIndex : "state",
sortable : true
}]);

//取得右边选中的用户
function userData(){
var store = Ext.getCmp("selectedUser").store;//取得checkedUserPanel面板的Store

var array = new Array();

var total = store.getCount();//取Store里面的总条数

for(var i = 0 ; i < total; i++){

   var record =store.getAt(i);//得到每一行数据
   var temValue = "";
   temValue = record.get("id");//根据相应的列名得到对应的值

   array[i]=temValue;
 
}
return array;
}

//构建表格面板
var checkedUserPanel = new Ext.grid.GridPanel({
cm : cm_selected,//ColumnModel
ds : ds_selected,//结果集
id : 'selectedUser',
title : '已分配用户',
// width:200,
height : 420,
autoScoll : true,

//分页
bbar : new Ext.PagingToolbar({
   pageSize : 2,
   store : ds_selected,
   displayInfo : true,
   displayMsg : "当前显示 {0} - {1} 条&nbsp;&nbsp;&nbsp;&nbsp;共计 {2} 条",
   emptyMsg : "没有显示数据"
}),
//添加双击事件
listeners : {
   "rowdblclick" : function(grid, rowIndex, e) {
    var record = grid.getStore().getAt(rowIndex)//得到选中行的记录
    selectGrid = Ext.getCmp("selectUserGrid"); //根据面板的ID得到相应的面板
    var no = selectGrid.store.find("id", record.get("id"));//根据列名找到所对应的记录
    var sm = selectGrid.getSelectionModel();//得到SelectedModel
    sm.deselectRow(no)//移除所双击的行
  
   }
}

});
//把面板添加到右边
checkedUserPanel.render(Ext.get("right"));
checkedUserPanel.doLayout();

//加载用户的结果集
ds_user.load({
params : {
   start : 0,
   limit : 10
}
});

ds_item.load({
params : {
   start : 0,
   limit : 10
}
});

分享到:
评论

相关推荐

    Ext表格代玛

    Ext表格代玛

    Ext表格(Grid)上面的悬浮提示

    NULL 博文链接:https://laodaobazi.iteye.com/blog/1064607

    Jquery仿Ext表格flexigrid

    **jQuery仿Ext表格Flexigrid详解** Flexigrid是一款基于jQuery的开源表格插件,它在功能和用户体验上模仿了Ext JS的Grid组件。这款插件以其轻量级、高效和丰富的特性,深受Web开发者喜爱,尤其适用于需要展示大量...

    Ext表格中增删改查实例

    它提供了一套完整的组件模型,其中包括一个强大的表格组件——Ext Grid。本文将深入探讨如何在Ext Grid中实现增删改查(CRUD)操作,这些操作是任何数据管理应用的基础。 首先,我们需要了解`Ext.grid.Panel`,它是...

    Ext表格列锁定+多表头插件

    在本文中,我们将深入探讨"Ext表格列锁定+多表头插件"这一主题,它在Ext3.4版本中的实现及其相关技术。这个插件主要用于改进Ext Grid的用户体验,特别是处理大量数据时,通过列锁定和多表头功能,使得用户能够更有效...

    Ext表格控件和树控件

    ### Ext表格控件和树控件 #### 表格控件 ##### 1.1 基本表格 `GridPanel` 在Ext JS框架中,`GridPanel` 是一种用于展示和管理表格数据的重要组件。它提供了丰富的功能,例如排序、缓存、拖动列、隐藏列、自动显示...

    EXT 表格 本地分页的例子

    EXT 表格 本地分页的例子 EXT 表格 本地分页的例子

    ext表格合并单元格的方法

    ### ext表格合并单元格的方法 #### 背景与概述 在进行Web开发时,特别是在使用Ext JS框架处理表格数据展示的过程中,经常会遇到需要合并单元格的情况。这不仅可以提升数据展示的美观性,还能增强数据的可读性和...

    JS表格分页源码,EXT表格分页的迷你版

    JS的表格分页小工具代码,自己开发遇到需求时候开发的,只有分页功能,EXT表格的迷你版。有问题到:http://blog.csdn.net/ben_gmail/article/details/6585141留言谢谢。

    Ext教程表单表格的使用

    EXT表格GridPanel是EXT JS中的另一种重要组件,用于显示和编辑结构化的数据。在示例中,`sampleGridNoPageing`是一个GridPanel实例,用于展示JSON数据。 1. GridPanel的配置项包括但不限于`frame`, `title`, `store...

    ext表格布局小例子

    其表格组件(`Ext.grid.GridPanel`)是其最具特色的功能之一,广泛应用于数据展示和管理。 #### 二、代码分析 在本例中,我们首先引入了必要的 ExtJS 相关文件,包括样式表、脚本等资源。 ```html ...

    基于EXT2.0.2表格间数据拖拽

    EXT2.0.2是EXT库的一个较早版本,它提供了一套完整的组件系统,包括表格(Grid)、面板(Panel)、窗口(Window)等,用于创建复杂的Web界面。在这个特定的场景中,我们将探讨“基于EXT2.0.2表格间数据拖拽”的实现...

    EXT 表格 中文排序

    一个关于EXTJs 表格 中文排序的例子

    Ext表格获取后台数据

    ExtJS是一款基于JavaScript的RIA(Rich Internet Application,富互联网应用)框架,它提供了许多强大的功能和组件,其中之一就是表格组件Ext.grid.GridPanel。 Ext.grid.GridPanel是一个功能强大的表格控件,它...

    Ext Panel拼揍表格模板.rar

    本资源“Ext Panel拼揍表格模板.rar”显然包含了关于如何使用Ext Panel创建自定义表格模板的示例和代码。 Ext JS是一个流行的JavaScript库,用于开发富互联网应用程序(RIA)。它提供了一个强大的组件模型,其中...

    ajax ext 表格数据导出

    本文将详细讲解如何使用Ajax和Ext技术实现表格(Grid)数据的导出,特别是导出到Excel格式。 首先,ExtJS是一个强大的JavaScript UI框架,它提供了一套完整的组件库,包括用于展示和操作数据的表格组件(Grid)。...

    ext可编辑表格

    "EXT可编辑表格"是一种基于EXTJS框架的功能强大的表格组件,允许用户在表格的单元格内直接进行编辑。EXTJS是Sencha公司开发的一个用于构建富客户端应用的JavaScript库,它提供了丰富的组件库,包括表格、窗口、菜单...

    表格Ext js源代码

    在本资源中,我们关注的是"表格Ext js gird源代码",这涉及到Ext JS中的Grid Panel组件,它是展示和操作数据集的主要工具。 Grid Panel是Ext JS中的核心组件之一,用于显示结构化的数据,通常以表格的形式。它支持...

    ext 多表头和锁定列结合的示例

    在EXT JS这个强大的JavaScript库中,多表头和锁定列的结合使用是创建复杂、功能丰富的数据展示表格的重要手段。EXT JS允许开发者构建高度自定义的用户界面,尤其是在处理大量数据时,锁定列和多表头功能能显著提高...

Global site tag (gtag.js) - Google Analytics