Extjs4 Grid 的详细设置模版

本文介绍了EXTJS4.0.7升级后,原有Grid功能和写法的变化,以及如何根据官方文档进行适应性修改。提供了一个具体的Grid.js配置示例,帮助开发者解决升级带来的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因:

   由于EXTJS4.0.7 的升级导致原程序在新版本下许多功能和写法都已改动,导致程序错误,自己根据官方网站研究了以下把Grid的js文件更改了一下已适应新的版本。


例子:[Grid.js]

Ext.Loader.setConfig({
    enabled: true
});


function OperaterMsg() {
    var row = Ext.getCmp("job_id").getSelectionModel().getSelections();
    if (row.length == 0) {
        Ext.Msg.alert("提示信息", "请您至少选择一个!");
    }
    else if (row.length > 1) {
        Ext.Msg.alert("提示信息", "对不起只能选择一个!");
    }
    else if (row.length == 1) {
        Ext.Msg.confirm("提 示!", OperRemark, function (btn) {
            if (btn == "yes") {
                alert('---- yes ------');
                // DelOpenRoomInfo(row[0]);
            }
            else {

            }
        })
    }
}

////------------原GRID读取数据--------------------------------
function GetAshx_Jsondata() {
    Ext.define('MyData', {
        extend: 'Ext.data.Model',
        fields: [{ name: 'job_id', type: 'int' }        //指明 int类型 ,在排序时将按数字大小排序
        , 'job_desc'
        , { name: 'min_lvl', type: 'int' }
        , { name: 'max_lvl', type: 'int' }
        ]
    });


    var mystore = Ext.create('Ext.data.Store', {
        storeId: 'DataStore',
        pageSize: 50,
        autoLoad: true,
        model: 'MyData',
        sorters: ['job_id', 'job_desc'],
        groupField: 'job_desc',
        sortInfo: { field: 'job_desc', direction: "DESC" },
        proxy: {
            type: 'ajax',
            url: '../ashx/TestJobDataParm.ashx?desc=manag',    //'../ashx/TestJobData.ashx','TestJsonData.json', 'JobData.json'  //'GetExtjsData.aspx?parm=List',     
            reader: {
                type: 'json',
                root: 'data',
                id: "job_id",
                totalProperty: 'totalCount'
            }
        }
    });
    //    Ext.Ajax.timeout = 90000;

    // 项目内容输出格式定制 ,可以为超连接
    function renderTopic(value, p, record) {
        return Ext.String.format(
            '<b><a href="http://sencha.com/forum/showthread.php?t={2}" target="_blank">{0}</a></b><a href="http://sencha.com/forum/forumdisplay.php?f={3}" target="_blank">{1} Forum</a>',
            value,
            record.data.forumtitle,
            record.getId(),
            record.data.forumid
        );
    }

    //定义右键弹出菜单-PopMenu---------------------start
    var addAction = Ext.create('Ext.Action', {
        //icon   : '../shared/icons/fam/delete.gif',  // Use a URL in the icon config
        text: '添加',
        disabled: false,
        minWidth: 80,
        handler: function (widget, event) {
            var rec = grid.getSelectionModel().getSelection()[0];
            if (rec) {
                alert("Add " + rec.get('job_id'));
            } else {
                alert('Please select a company from the grid');
            }
        }
    });
    var editAction = Ext.create('Ext.Action', {
        iconCls: 'buy-button',
        text: '编辑',
        disabled: false,
        minWidth: 80,
        handler: function (widget, event) {
            var rec = grid.getSelectionModel().getSelection()[0];
            if (rec) {
                alert("Edit " + rec.getid());
                //OperaterMsg;
            } else {
                alert('Please select a company from the grid');
            }
        }
    });
    var contextMenu = Ext.create('Ext.menu.Menu', {
        items: [
            addAction,
            editAction
        ]
    });
    //-----------------------------------------end------------------------------

    //统计栏位的输出定制,汉化下拉菜单的中文名称
    var groupingFeature = Ext.create('Ext.grid.feature.Grouping', {   
        groupByText: '以这字段组',
        showGroupsText: '是否要分组',
        groupHeaderTpl: '统计值: <font color=blue>{name}</font> (<font color=red>{rows.length}</font> Item{[values.rows.length > 1 ? "s" : ""]})'
    });

    //对列中各值,根据条件不同,更改数值的显示格式,val-当前值,p-单元格属性,r-该条记录,通过r.get('字段')可获值
    function valChange(val, p, r) {
        if (val > 50) {
            return '<span style="color:blue;">' + val + '</span>';
        } else if (val < 50) {
            if (val > 15 && val < 30) {
                p.style = "background-color:yellow;";
            }
            return '<span style="color:red;">' + val + '</span>';
        }
        return val;
    };

    function job_desc_format(val, p, r) {
        //p.style = "background-color:yellow;";   //单元格属性设置 P为单元格对象
        //return Ext.String.format('<a href="http://html{0}.asp" target="_blank">{1}_{2}_{3}</a>', r.get('job_id'), val, r.get('min_lvl'), r.getId());
        return Ext.String.format('<a href="http://html.asp?it={0}" target="_blank">{1}_{2}_{3}</a>', val, val, r.get('min_lvl'),r.getId());
    }

    //---------创建行序号----------------------
    var rowNumber = Ext.create('Ext.grid.RowNumberer', {
        width: 50,
        text: '序号'
    });

    //-------------------------------------创建Grid----start------------------------------------------
    var sm = Ext.create('Ext.selection.CheckboxModel');   //---创建checkBox 列
    var grid = Ext.create('Ext.grid.Panel', {
        store: 'DataStore',   //'DataStore',JsonStore
        selModel: sm,         //---checkbox 模式
        collapsible: false,
        iconCls: 'icon-grid',
        frame: true,           //显示Grid整个框架
        height: 800,
        width: 880,
        x: 20,
        y: 20,
        title: '测试分组Grid',
        //selType: 'cellmodel',   //选择单元/行模式,"rowmodel"整行选中,默认值
        border: true,
        loadMask: true,
        columnLines: true,    //显示列线
        //分组设置部分---------------start
        features: groupingFeature,
        //        features: [{ ftype: 'grouping'}],
        //分组设置部分---------------end
        viewConfig: {
            id: 'gv',
            trackOver: false,   //选择行背景取消
            stripeRows: true,   //斑马线
            listeners: {
                itemcontextmenu: function (view, rec, node, index, e) {
                    e.stopEvent();
                    contextMenu.showAt(e.getXY());
                    return false;
                }
            }
        },
        columns: [rowNumber,                  //调用创建序号对象 //Ext.create('Ext.grid.RowNumberer'),
            {
                text: "ID",
                width: 50,
                dataIndex: 'job_id',
                sortable: true,      //是否可以排序
                hidden: false    //隐藏列
            }, {
                text: "工作说明",
                width: 200,
                dataIndex: 'job_desc',
                //editor: 'textfield',          //允许编辑字段 但好象没用????????
                renderer: job_desc_format,     //function (val, p, r) { return '<a href="abc.aspx">' + val + '</a>'; },   //job_desc_format,   
                sortable: true
            }, {
                text: "最小等级",
                width: 80,
                dataIndex: 'min_lvl',
                renderer: valChange,
                sortable: true
            }, {
                text: "最大等级",
                width: 80,
                dataIndex: 'max_lvl',
                sortable: true
            }
        ],
        fbar: ['->', {
            text: 'Clear Grouping',
            iconCls: 'icon-clear-group',
            handler: function () {
                groupingFeature.disable();
            }
        }],
        dockedItems: [{
            xtype: 'toolbar',
            dock: 'top',
            layout: {
                pack: 'center'   //放置位置
            },
            items: [addAction, editAction]      //[{text: 'add'},{text:'delete'}]
        }, {
            xtype: 'pagingtoolbar',
            //store: 'DataStore',   // same store GridPanel is using
            dock: 'bottom',
            ui:'footer',
            layout: {
                pack: 'center'   //放置位置
            },
            items: [{ text: 'save' }, { text: 'cancel'}],
            displayInfo: true
        }, {
            xtype: 'toolbar',
            dock: 'bottom',
            //ui: 'footer',    //显示button框
            //store: 'DataStore',   // same store GridPanel is using
            items: [{text:'save'},{text:'cancel'}],
            displayInfo: false
        }],
        renderTo: Ext.getBody()
    });
    //-------------------------------------创建Grid----end------------------------------------------

    //选择事件触发
    grid.getSelectionModel().on({
        selectionchange: function(sm, selections) {
            if (selections.length) {
                addAction.enable();
                editAction.enable();
            } else {
                addAction.disable();
                editAction.disable();
            }
        }
    });

};

//-------------------------------------------程序开始--------------------------------------------
Ext.onReady(function () {
//    Ext.Msg.alert('提示信息', '学习EXTJS');
    GetAshx_Jsondata();
})



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trassion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值