zoukankan      html  css  js  c++  java
  • ext应用中的问题


    按钮图标 :
    iconCls : 'deleteIcon', --删除
    iconCls : 'edit1Icon', --编辑
    iconCls : 'addIcon', --新增
    iconCls : 'previewIcon',--查询
    iconCls : 'arrow_refreshIcon',--刷新
    iconCls : 'acceptIcon', --确认
    iconCls : 'tbar_synchronizeIcon', --重置
    iconCls : 'tbar_synchronizeIcon', --关闭

    定义一个数据源store:
    静态数据源:
    store:new Ext.data.SimpleStore({
    fields : ['name', 'code'],
    data : [['是', '1'], ['否', '0']]
    });
    动态数据源:
    var dept_store = new Ext.data.JsonStore({
    url:'getDept.action', //绑定的URL
    root:'ROOT',
    totalProperty:'TOTALCOUNT',
    fields:[
    'deptid','deptname' //默认与数据库字段相同
    ]
    });
    或者:var dept_store = new Ext.data.JsonStore({
    url:'getDept.action', //绑定的URL
    root:'ROOT',
    totalProperty:'TOTALCOUNT',
    fields:[
    {name : 'deptid',mapping:'deptid'}, //映射数据库字段
    {name : 'deptname',mapping:'deptname'}
    {name : 'enabled',mapping:'enabled'} //下拉选中的数据,可看作选中一行
    ]
    });
    动态改变数据源的URL:
    store.proxy= new Ext.data.HttpProxy({url: 'loadByParentid.action?parentid=' + combo.value});
    store.load();
    加载store:
    store_dept.load();
    store加载的事件:
    store_dept.on('load',function() {
    this.baseParams =setParams(); //设置参数
    });
    store加载前的事件:
    store.on('beforeload', function() {
    this.baseParams = myForm.getForm().getValues();
    });
    获得store的总记录数:store.getCount()

    //分页查询数据
    function queryByParams(){ //每次查询时,调用这个函数即可
    var params = setParams();
    store.reload({
    params : params
    });
    }

    //设置查询参数
    function setParams(){
    var obj = myForm.getForm().getValues(); //获取查询表单元素的值
    var params = {};
    params.start = 0;
    params.limit = bbar.pageSize;
    params.stime = obj.stime;
    params.etime = obj.etime;

    return params ;
    }

    定义自动当前页行号
    var rownum = new Ext.grid.RowNumberer({
    header : '序号',
    width : 60
    });
    定义选择模型(GRID列前的复选框)
    var sm = new Ext.grid.CheckboxSelectionModel({});
    sm.on('selectionchange',function() { //选择某一行时,的改变事件
    var select = grid1.getSelectionModel().getSelections();
    if(select.length<1) {
    Ext.getCmp('delete').setDisabled(true);
    }else{
    Ext.getCmp('delete').setDisabled(false);
    }

    });

    定义GRID列模型
    var cm = new Ext.grid.ColumnModel([rownum, sm,
    {
    header : '部门名称', //列名称
    dataIndex : 'deptname', //列绑定的后台字段
    editor : new Ext.grid.GridEditor(new Ext.form.TextField({ })), //此时的Grid需定义成EditorGridPanel,则该列才可编辑
    width : 150
    },
    {
    header : '部门编号',
    dataIndex : 'deptid',
    width : 150,
    hidden:true //隐藏列
    }
    /*,
    {
    header : '创建时间',
    dataIndex : 'createtime',
    width : 150,
    format:'yyyy-MM-dd hh:mm:ss'
    renderer:function(date) { //渲染列,根据值来判断显示什么名称
    if(date=='0') {
    return "<span style='color:red; font-weight:bold'>未审核</span>";
    }
    if(date=='1') {
    return "<span style='color:red; font-weight:bold'>已审核</span>";
    }
    if(date=='2') {
    return "<span style='color:blue; font-weight:bold'>退回</span>";
    }
    }
    } */
    ]);

    分页:
    每页显示条数下拉选择框
    var pagesize_combo = new Ext.form.ComboBox({
    name : 'pagesize',
    triggerAction : 'all',
    mode : 'local',
    store : new Ext.data.ArrayStore({
    fields : ['value', 'text'],
    data : [[10, '10条/页'], [20, '20条/页'],
    [50, '50条/页'], [100, '100条/页'],
    [250, '250条/页'], [500, '500条/页']]
    }),
    valueField : 'value',
    displayField : 'text',
    value : '20',
    editable : false,
    width : 85
    });
    var number = parseInt(pagesize_combo.getValue()); //当前分页下拉的选中值 20页

    // 改变每页显示条数reload数据
    pagesize_combo.on('select', function(comboBox) {
    bbar.pageSize = parseInt(comboBox.getValue());
    number = parseInt(comboBox.getValue());
    queryByParams(); //选择页数查询
    });

    // 分页工具栏 GRID底部工具栏
    var bbar = new Ext.PagingToolbar({
    pageSize : number, //分页的值
    store : store, //绑定的数据源
    displayInfo : true,
    displayMsg : '显示{0}条到{1}条,共{2}条',
    plugins : new Ext.ux.ProgressBarPager(), // 分页进度条
    emptyMsg : "没有符合条件的记录",
    items : ['-', '&nbsp;&nbsp;', pagesize_combo]
    });

    // GRID表格工具栏,GRID顶部工具栏
    var tbar = new Ext.Toolbar({
    items : [{
    text : '查看详情',
    id : 'sk',
    disabled : true,
    iconCls : 'addIcon',
    handler : function() {
    showDetails();
    }
    },{
    text : '新增',
    id : 'tbi_check',
    iconCls : 'previewIcon',
    handler : function() {
    fnAdd();
    }
    }, {
    text : '刷新',
    iconCls : 'arrow_refreshIcon',
    handler : function() {
    queryByParams();
    }
    }]
    });

    // 定义一个grid,并绑定列及工具栏
    var grid = new Ext.grid.GridPanel({ //EditorGridPanel 可编辑表格
    // 表格面板标题,默认为粗体,我不喜欢粗体,这里设置样式将其格式为正常字体
    title : '<span class="commoncss">金蝶出库单收费</span>',
    height : 150,
    300,
    id : 'id_grid_sfxm',
    autoScroll : true,
    frame : true,
    region : 'center', // 和VIEWPORT布局模型对应,充当center区域布局
    store : store, // 数据存储
    stripeRows : true, // 斑马线
    cm : cm, // 列模型
    sm : sm, //复选框
    tbar : tbar, // 表格工具栏
    bbar : bbar,// 分页工具栏
    // autoLoad:true,
    viewConfig : {
    // 不产横向生滚动条, 各列自动扩展自动压缩, 适用于列数比较少的情况
    // forceFit : true
    },
    loadMask : {
    msg : '正在加载表格数据,请稍等...'
    }
    }
    });

    FormPanel的定义:
    var myForm = new Ext.form.FormPanel({
    region : 'north',
    title : '<span class="commoncss">请假单查询<span>',
    collapsible : false,
    border : true,
    labelWidth : 60, // 标签宽度
    // frame : true, //是否渲染表单面板背景色
    labelAlign : 'right', // 标签对齐方式
    bodyStyle : 'padding:5 5 5', //-----------手动设置样式
    buttonAlign : 'center',
    height : 100,
    items : [{ // 1
    layout : 'column',
    border : false,
    items : [{//2
    columnWidth : .25, // col 1
    layout : 'form',
    labelWidth : 80, // 标签宽度
    defaultType : 'textfield',
    border : false,
    items : [{ //3
    fieldLabel:'开始时间',
    name : 'stime',
    xtype : 'datefield',
    format : 'Y-m-d',
    value:new Date().getFullYear()+"-01-01",
    anchor : '100%'

    }]//3
    },{//2
    columnWidth : .25, // col 1
    layout : 'form',
    labelWidth : 100, // 标签宽度
    defaultType : 'textfield',
    border : false,
    items : [
    {
    fieldLabel:'至',
    name : 'etime',
    xtype : 'datefield',
    format : 'Y-m-d',
    value:new Date().getDate()+30,
    anchor : '100%'
    },{
    fieldLabel:'隐藏域不占空间',
    name : 'aaaa',
    xtype : 'hidden',
    anchor : '100%'
    },{
    fieldLabel:'隐藏域会占空间',
    name : 'aaaa',
    xtype : 'textfield',
    style :'', -----手动设置样式
    hidden:true,
    anchor : '100%'
    }

    ]//3
    }]//2
    }]//1
    ,
    buttons : [{
    text : '查询',
    iconCls : 'page_findIcon',
    handler : function() {
    queryByParams();
    }
    }, {
    text : '重置',
    iconCls : 'tbar_synchronizeIcon',
    handler : function() {
    myForm.getForm().reset();
    }
    }]
    });

    在Panel的items中还可以显示html格式的信息的:
    {
    html:"<span id='daysHtmlUpdate'>00000</span>",
    style:"Line-height:30px;letter-spacing:2px;padding:10px;margin-left:100px;text-align:left;color:red;font-size:13px;",
    anchor:'95%',
    border:false

    },


    grid 的高度根据浏览器高度来定:
    autoWidth:true, //宽度自适应
    height : document.body.clientHeight-60, //高度根据浏览器高度来定
    autoScroll : true, //滚动条

    grid的双击事件:
    grid.on('rowdblclick', function(grid, rowIndex, event) {
    showDetails(); //显示详情
    });

    window最大化:
    autoScroll : true, //滚动条
    maximized :true, //最大化
    modal : true, //模态窗口
    constrain : true,//设置窗口是否可以溢出父容器
    pageY : 20 ,//页面定位Y坐标
    pageX : document.body.clientWidth/2 - 600/2 , //页面定位X坐标

    grid合计控件使用:
    summary = new Ext.ux.grid.GridSummary();

    //添加一个按钮,自动切换显示或隐藏合计行
    var bbar_summary = new Ext.Toolbar({
    items : [{
    text : '显示或隐藏合计信息',
    iconCls : 'addIcon',
    handler : function() {
    summary.toggleSummary(); //合计行的自动切换显示和隐藏

    }
    }]
    });
    在GRID显示合计行,和自动切换显示或隐藏合计行
    // 表格实例
    var grid1_update_fp = new Ext.grid.GridPanel({
    // 表格面板标题,默认为粗体,我不喜欢粗体,这里设置样式将其格式为正常字体
    height : 168,
    id : 'id_grid',
    autoScroll : true,
    frame : true,
    store : store, // 数据存储
    stripeRows : true, // 斑马线
    cm : cm1, // 列模型
    plugins : [summary], //在GRID中嵌入合计行
    bbar : bbar_summary, // 分页工具栏
    loadMask : {
    msg : '正在加载表格数据,请稍等...'
    }
    });
    前台ajax,显示合计行的数值:
    summary.toggleSummary(true);
    summary.setSumValue(Ext.decode(response.responseText)); //
    后台设置合计的值:
    map.put("price", 1222); //总金额 //这的字段名称与前台的列的名称相对应,即统计某列的值
    map.put("amount", 23); //总数量
    map.put("success", new Boolean(true));

    combox的下拉事件:
    var comboDept = new Ext.form.ComboBox({
    id:deptID_add',
    hiddenName : 'deptname',
    fieldLabel : '部门',
    emptyText : '请选择...',
    triggerAction : 'all',
    store : store_dept, //下拉要绑定的数据源
    allowBlank : false,
    displayField : 'name',
    valueField : 'id',
    loadingText : '正在加载数据...',
    mode : 'local', // 数据会自动读取,如果设置为local又调用了store.load()则会读取2次;也可以将其设置为local,然后通过store.load()方法来读取
    forceSelection : true,
    typeAhead : true,
    resizable : true,
    editable : false,
    // value : '530101', //设置默认值
    anchor : '100%',
    listeners : {
    'select' : function(combox,record,index){
    var v = combox.getValue();//获取当前选中的值,可以做其它处理
    //combox中的数据可以看作是一行行的,
    var dname = record.data.deptname; //还可以使用这种方式获取数据
    }
    }
    });
    combox下拉默认选中第一项:
    使combox下拉绑定的数据源默认选中第一项即可,
    store_dept.on("load", function() { // 对 ComboBox 的数据源加上 load 事件就好
    var vv = store_dept.getAt(0).get('id');
    var name = store_dept.getAt(0).get('name')
    comboDept.setValue(vv);
    comboDept.setRawValue(name);
    });

    定义BUTTON按钮:
    new Ext.Button({
    id : 'editcustomer',
    name:'editcustomer',
    text:'编辑客户信息',
    iconCls : 'edit1Icon',//iconCls : 'acceptIcon',
    enableToggle: true, //是否允许按钮在弹起和按下两种状态中切换
    style: {
    marginLeft: '30px' //修改自己定义的样式
    },
    handler: function (event) {
    var v = event.text;
    if(v=='编辑客户信息'){//
    Ext.getCmp('editcustomer').setText('保存客户信息');
    Ext.getCmp('editcustomer').getEl().dom.iconCls='acceptIcon';
    Ext.getCmp('editcustomer').getEl().dom.disabled=true;
    }else{
    Ext.getCmp('editcustomer').setText('编辑客户信息');
    Ext.getCmp('editcustomer').getEl().iconCls='edit1Icon';
    }
    }
    })*/

    FormPanel 列布局:
    var addForm = new Ext.form.FormPanel({
    // region : 'north',
    // title : '<span class="commoncss">录入<span>',
    collapsible : false,
    border : true,
    labelWidth : 100, // 标签宽度
    // frame : true, //是否渲染表单面板背景色
    labelAlign : 'right', // 标签对齐方式
    bodyStyle : 'padding:15 5 5', // 表单元素和表单面板的边距
    buttonAlign : 'center',
    height : 180,
    items : [{ //最外层采用的form布局
    fieldLabel:'测试',
    name : 'test',
    id :'testAdd',
    allowBlank : false,
    xtype : 'textfield',
    anchor : '50%'
    },
    { // 1 这里开始采用列布局
    layout : 'column',
    border : false,
    items : [{//2
    columnWidth : .25, // 列 1
    layout : 'form',
    labelWidth : 80, // 标签宽度
    defaultType : 'textfield',
    border : false,
    items : [new Ext.form.ComboBox({
    hiddenName:'deptid',
    id : 'deptid_add',
    fieldLabel:'部门',
    emptyText:'请选择..',
    triggerAction:'all',
    store:storeDept,
    displayField:'text',
    valueField:'value',
    loadingText:'正在加载数据...',
    mode:'local',
    forceSelection:true,
    typeAhead:true,
    resizable:true,
    editable:false,
    anchor:'100%'
    }),{ //3
    fieldLabel:'开始时间',
    name : 'starttime',
    id :'starttimeAdd',
    allowBlank : false,
    xtype : 'datetimefield',
    format : 'Y-m-d H:i:s',
    anchor : '50%'
    }]//3
    },{//2
    columnWidth : .25, // 列 2
    layout : 'form',
    labelWidth : 80, // 标签宽度
    defaultType : 'textfield',
    border : false,
    items : [,{ //3
    fieldLabel:'员工名称',
    name : 'username',
    id :'username_add',
    allowBlank : false,
    xtype : 'textfield',
    anchor : '50%'

    },{ //3
    fieldLabel:'外出结束时间',
    name : 'endtime',
    id :'endtimeAdd',
    allowBlank : false,
    xtype : 'datetimefield',
    format : 'Y-m-d H:i:s',
    anchor : '50%'
    }]//3
    }]//2 在此新增列
    }]//1

    });
    {
    xtype:'combo',
    store: childStore,
    valueField :"id",
    displayField: "mc",
    //数据是在本地
    mode: 'local',
    forceSelection: true,//必须选择一项
    emptyText:'请选择子分类...',//默认值
    hiddenName:'interviewsDetail.child_category',//hiddenName才是提交到后台的input的name
    editable: false,//不允许输入
    triggerAction: 'all',//因为这个下拉是只能选择的,所以一定要设置属性triggerAction为all,不然当你选择了某个选项后,你的下拉将只会出现匹配选项值文本的选择项,其它选择项是不会再显示了,这样你就不能更改其它选项了。
    //allowBlank:false,//该选项值不能为空
    fieldLabel: '选择',
    id : 'child_id',
    name: 'child',
    400
    }

    下拉框提示信息:
    var resultTpl_add = new Ext.XTemplate(
    '<tpl for="."><div ext:qtip="提示:编号={deptid};名称={deptname} class="x-combo-list-item">{deptid}----{deptname}</div></tpl>'
    );
    var deptComb = new Ext.form.ComboBox({
    fieldLabel : '部门名称',
    allowBlank : false,
    hiddenName:'deptid',
    id : 'dept_add',
    // emptyText : '请选择...',
    store : deptStore,
    triggerAction : 'all',
    mode:'local',
    valueField : 'deptid',
    displayField : 'deptname',
    allowBlank : false,
    forceSelection : true,
    // typeAhead : true,
    pageSize:8, //下拉默认显示的页数
    listWidth:600 , //下拉的显示宽度
    width : 300,
    // hideTrigger:true, //是否显示下拉图标
    tpl: resultTpl_add, //下拉时,绑定提示信息的模板
    onTriggerClick:function(){ //下拉分页查询
    Ext.getCmp('product_add').focus();
    storeDept.load({
    params:{
    start : 0,
    limit : psize_add
    }
    });
    }
    });
    EditorPanel 行编辑 中的下拉框,选中时不显示名称的问题:
    var colM = new Ext.grid.ColumnModel([sm,rownum,{
    header:'编号',
    dataIndex:'id',
    hidden:true
    },{
    header : '编号', // 列标题
    dataIndex : 'code', // 数据索引:和Store模型对应
    hidden : true,
    // sortable : true,
    // editor : new Ext.grid.GridEditor( deptComb),
    // renderer: function(val){ //------------------------------------下拉选中时显示名称而不是ID
    // if(val==""||val==null){
    // return ;
    // }
    // return deptStore.queryBy(function(rec){
    // if(rec.data.deptid==val){
    // return true;
    // }
    // else{
    // return false;
    // }
    // }).itemAt(0).get('deptname');
    // },
    width : 220
    },
    Grid列表显示图标列,而不是数据:
    //----------------------------------------------------------------------------------------- 生成一个图标列
    function iconColumnRender_add(value) {
    return "<a href='javascript:void(0);' ><img src='" + webContext
    + "/resource/image/ext/delete.png'/></a>"; //指定图标路径
    }
    var colM = new Ext.grid.ColumnModel([sm,rownum,
    {
    // header : '操作',
    // dataIndex : 'del',
    // renderer : iconColumnRender_add, //渲染的图标
    // width : 50// 列宽
    // }


    CARD布局:
    //qForm 1 的属性
    var qForm = new Ext.form.FormPanel({
    id:'qForm',
    name:'qForm',
    region : 'north',
    title : '<span class="commoncss">货物收款查询条件<span>',
    collapsible : true,
    border : true,
    labelWidth : 50, // 标签宽度
    // frame : true, //是否渲染表单面板背景色
    labelAlign : 'right', // 标签对齐方式
    bodyStyle : 'padding:10 5 0 5', // 表单元素和表单面板的边距
    buttonAlign : 'center',
    height : 130,
    buttonAlign : 'center',
    items : [ {.........}]
    //GRID属性
    var grid = new Ext.grid.GridPanel({
    title : '<span class="commoncss">test</span>',
    height : 500,
    autoWidth:true,
    id : 'id_grid',
    autoScroll : true,
    frame : true,
    region : 'center', // 和VIEWPORT布局模型对应,充当center区域布局
    store : store, // 数据存储
    stripeRows : true, // 斑马线
    cm : cm, // 列模型
    sm : sm,
    tbar : tbar, // 表格工具栏
    bbar : bbar,// 分页工具栏 。。。。。。

    //注:qForm2,grid2与qForm,grid属性值类似

    //一个PANEL存放一个页面
    panel_1= new Ext.Panel({ //------------------------------------------货款列表PANEL
    layout : 'form',
    id : 'list1',
    border:false,
    autoWidth:true,
    // frame:true,
    defaults : {//设置默认属性
    bodyStyle:'background-color:#FFFFFF;padding:5 5 5;'//设置面板体的背景色
    },
    items : [qForm,grid]
    });


    panel_2= new Ext.Panel({ //-----------------------------------------货物发票列表PANEL
    layout : 'form',
    id : 'list2',
    border:false,
    autoWidth:true,
    // frame:true,
    defaults : {//设置默认属性
    bodyStyle:'background-color:#FFFFFF;padding:5 5 5;'//设置面板体的背景色
    },
    items : [qForm2,grid2]
    });

    //将两个页面放到一个PANEL中,以便切换
    tabpanel_list=new Ext.Panel({
    //renderTo:'order_list',
    layout:'card',
    activeItem:0,
    '100%',
    height:'100%',
    autoScroll:true,
    items:[
    panel_1,panel_2
    ]
    });


    viewport_order_list = new Ext.Viewport({
    enableTabScroll : true,
    layout:'fit',
    items:[ tabpanel_list]

    });

    //切换TAB页面的方法
    function fnBack_list(){//----------------------点击返回---列表页面
    tabpanel_order_list.layout.setActiveItem('list1');// 这里指定要跳转的panel页面的ID名称
    }

    function fnCkd_list(){//----------------------点击返回---出库单页面
    tabpanel_order_list.layout.setActiveItem('list2');//0
    }

  • 相关阅读:
    机器学习——线性回归
    系统课程
    C++——数据结构之链表
    PHP检测json格式数据
    如何搭建git服务器
    ucenter通信实现同步登录、同步退出(详细)
    获取ip地址
    JQuery对象与DOM对象的区别与转换
    php导出数据到csv文件
    [转载]php中sleep,flush,ob_flush函数介绍
  • 原文地址:https://www.cnblogs.com/summer520/p/3270208.html
Copyright © 2011-2022 走看看