<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    簡介:這篇文章將告訴你如何使用Ext中的Grid,Form,Dialog來實(shí)現(xiàn)列表,創(chuàng)建,更新,刪除,查找和分頁功能

    參考:http://extjs.com/learn/Tutorial:Using_Ext_grid_form_dialog_to_achieve_paging_list,_create,_edit,_delete_function

    作者:puras

    簽于現(xiàn)在網(wǎng)上多數(shù)的Form的例子都多數(shù)是描述前臺(tái)UI的,而沒有對(duì)與服務(wù)端通訊的部分,故參考EXTJS的一個(gè)指南,寫下此文,希望能對(duì)大家有所幫助.

    在WEB應(yīng)用中,大部分的頁面都可以被分為:列表,創(chuàng)建,讀取,更新,刪除.在Ext的文檔中心提供了一個(gè)非常好的例子,一個(gè)行內(nèi)編輯的表格.然而,在現(xiàn)實(shí)中,行內(nèi)編輯的表格是遠(yuǎn)遠(yuǎn)不夠的,還需要用不同的方式來展示表單.下面的例子中向你展示如何在表格中創(chuàng)建/更新一個(gè)對(duì)話框表單.

    列表功能

    首先是是一個(gè)權(quán)限列表頁,它包含分頁,查詢/過濾功能,創(chuàng)建和刪除功能.

    先定義數(shù)據(jù)源:

    this.ds = new Ext.data.Store({
                        proxy : new Ext.data.HttpProxy({ url : '/wit/data.shtml' }), //'/wit/data.shtml' 一個(gè)讀取數(shù)據(jù)列表的Action
                        reader : new Ext.data.JsonReader({ //使用JSON傳輸入數(shù)據(jù)
                            root : 'roleList',
                            totalProperty : 'totalCount',
                            id : 'id'
                        },
                        // 定義字段映射
                        [
                            {
                                name : 'id',
                                mapping : 'id',
                                type : 'string'
                            },
                            {
                                name : 'name',
                                mapping : 'name',
                                type : 'string'
                            },
                            {
                                name : 'description',
                                mapping : 'description',
                                type : 'string'
                            },
                            {
                                name : 'createDate',
                                mapping : 'createDate',
                                type : 'string'
                            },
                            {
                                name : 'updateDate',
                                mapping : 'updateDate',
                                type : 'string'
                            }
                        ]),
                        remoteSort : true
                    });
                    this.ds.load({ params:{ start : 0, limit : 20 } });

    指定數(shù)據(jù)的來源位置,解析的方式,以及字段的映射.

    接下來是表格中表頭的定義,匹配上面的字段:

    this.cm = new Ext.grid.ColumnModel([
                        {
                            header : '#',
                            dataIndex : 'id',
                            width : 30,
                            sortable : 1
                        },
                        {
                            header : '名稱',
                            dataIndex : 'name',
                            width : 140,
                            sortable : 1
                        },
                        {
                            header : '描述',
                            dataIndex : 'description',
                            width : 140,
                            sortable : 1
                        },
                        {
                            header : '創(chuàng)建日期',
                            dataIndex : 'createDate',
                            width : 150,
                            sortable : 1
                        },
                        {
                            header : '修改日期',
                            dataIndex : 'updateDate',
                            width : 150,
                            sortable : 1
                        }
                    ]);

    再定義一下Grid:

    this.grid = new Ext.grid.Grid('htmlGridPanel', {
                        ds : Grid.ds,
                        cm : Grid.cm,
                        enableColLock : false,
                        autoSizeColumns : true,
                        loadMask : true
                    });
                    this.grid.render();

    現(xiàn)在,就可以看到簡單的表格了.功能還有待完善.

    接下來,在表格的頭部面板處,添加過濾/查詢的下拉菜單:

    this.gridHead = this.grid.getView().getHeaderPanel(true);
                    this.toolbar = new Ext.Toolbar(this.gridHead);
                    this.filterBtn = new Ext.Toolbar.MenuButton({
                        icon : '../images/class.gif',
                        cls : 'x-btn-text-icon',
                        text : '選擇過濾器',
                        tooltip : '選擇一個(gè)過濾器',
                        menu : { items : [
                            new Ext.menu.CheckItem({ text : '編號(hào)', value : 'id', checked : true, group : 'filter', checkHandler : this.onItemCheck}),
                            new Ext.menu.CheckItem({ text : '名稱', value : 'name', checked : false, group : 'filter', checkHandler : this.onItemCheck}),
                            new Ext.menu.CheckItem({ text : '描述', value : 'description', checked : false, group : 'filter', checkHandler : this.onItemCheck})
                        ]},
                        minWidth : 105
                    });               
                    this.toolbar.add(this.filterBtn);       
                    this.filter = Ext.get(this.toolbar.addDom({
                        tag : 'input',
                        type : 'text',
                        size : '30',
                        value : '',
                        style : 'background : #F0F0F9;'
                    }).el);
                    this.filter.on('keypress', function(e) {
                        if (e.getKey() == e.ENTER && this.getValue().length > 0) {
                            Grid.ds.load({ params : { start : 0, limit : 20 }});
                        }
                    });   

    在表格的底部面板添加分頁,添加,刪除按鈕:

    this.gridFoot = this.grid.getView().getFooterPanel(true);               
                    this.paging = new Ext.PagingToolbar(this.gridFoot, this.ds, {
                        pageSize : 20,
                        displayInfo : true,
                        displayMsg : '共有 {2} 條記錄.當(dāng)前顯示 {0} - {1}條記錄.',
                        emptyMsg : '沒有記錄!'
                    });
                    this.paging.add('-', {
                        pressed : true,
                        enableToggle : true,
                        text : '添加',
                        cls : '',
                        toggleHandler : this.doAdd
                    });
                    this.paging.add('-', {
                        pressed : true,
                        enableToggle : true,
                        text : '刪除',
                        cls : '',
                        toggleHandler : this.doDel
                    });

    在分頁中,你需要在從服務(wù)器端加載數(shù)據(jù)之前發(fā)送過濾的字段和值:

    this.ds.on('beforeload', function() {
                        Grid.ds.baseParams = {
                            filterValue : Grid.filter.getValue(),
                            filterTxt : Grid.filterBtn.getText()
                        };
                    });
    從服務(wù)器端返回的列表的JSON結(jié)果如下:

    {"roleList":[{"id":21,"description":"description21","name":"puras21","createDate":"Fri Sep 07 15:54:44 CST 2007","updateDate":"Fri Sep 07 15:54:44 CST 2007"},{"id":40,"description":"description40","name":"puras40","createDate":"Fri Sep 07 15:54:44 CST 2007","updateDate":"Fri Sep 07 15:54:44 CST 2007"}],"totalCount":2}

    刪除

    刪除方法如下:

    doDel : function() {
                    var c = Grid.grid.getSelections();
                    if (c.length > 0)
                        Ext.MessageBox.confirm('消息', '確認(rèn)要?jiǎng)h除所選記錄?', Grid.doDelProc);
                    else
                        Ext.MessageBox.alert('警告', '最少需要選擇一條記錄!');   
                },
                doDelProc : function(btn) {
                    if (btn == 'yes') {
                        if (Grid.grid.getSelectionModel().hasSelection()) {
                            var ids = new Array();
                            var records = Grid.grid.getSelectionModel().getSelections();
                            for (var i = 0, len = records.length; i < len; i++) {
                                ids[ids.length] = records[i].id;
                            }
                            Ext.lib.Ajax.request(
                                'GET',
                                '/wit/delete.shtml?ids=' + ids,
                                {
                                    success : Grid.onSuccess,
                                    failure : function(form, action) { Ext.MessageBox.alert('消息', '刪除失敗!');}
                                },
                                null
                            );
                        }
                    }
                },
                onSuccess : function(o) {
                    var response = function(json) {
                        try {
                            return eval('(' + json + ')');
                        } catch(e) {}
                        return null;
                    }(o.responseText);
                    if (response.failure && response.failure == true) {
                        Ext.MessageBox.alert('消息', response.info);
                    }
                    Grid.ds.reload();
                }

    通過Ajax的形式提交到服務(wù)器端.如果刪除失敗,則將失敗信息顯示給用戶.onSuccess可以用于添,刪,改三個(gè)功能的處理.返回的JSON數(shù)據(jù)結(jié)構(gòu)如下:

    "{success : true, info : '刪除成功!'}"

    未完待續(xù)......

    Feedback

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-09-07 20:17 by Thomas
    不錯(cuò)!

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-09-10 10:45 by 赫連紫軒
    @Thomas
    希望能夠喜歡~^_^

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-09-11 10:31 by li
    能給個(gè)源碼嗎?我用jsonReader讀取數(shù)據(jù)出不來.如果能給源碼請(qǐng)發(fā)送到followmephoe@yahoo.com.cn,謝謝!

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-09-11 16:00 by zhdq
    能給我發(fā)一份源代碼,謝謝,
    zhdq_j2ee@126.com
    謝謝,學(xué)習(xí)學(xué)習(xí)

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-09-11 17:35 by 赫連紫軒(puras)

    實(shí)在不好意思啊
    因?yàn)橹皇桥R時(shí)為了測(cè)試用的
    所以代碼寫的很亂
    等有時(shí)間我整理一下
    再發(fā)給各位朋友
    我會(huì)盡快的

    有什么問題可以在這里共同探討一下^_^

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-10-20 10:25 by xshlife
    很不錯(cuò),我現(xiàn)在也剛開始入門ext ,請(qǐng)發(fā)一份你這個(gè)例子源碼給我,謝謝.
    xshlife@yahoo.com.cn

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-10-22 09:18 by 赫連紫軒(puras)
    @xshlife

    http://m.tkk7.com/puras/archive/2007/09/12/144478.html

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能[未登錄]  回復(fù)  更多評(píng)論   

    2007-11-08 09:03 by 影子
    謝謝你的文章,Ext我現(xiàn)在還沒完全入門,能否發(fā)一份原代碼和后續(xù)部分的URL給我,謝謝!
    Email:herhun@163.com
    MSN:herhun@hotmail.com
    QQ:4953295

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-11-13 16:17 by 楊雪松
    totalCount 要怎么取得呢?
    還是要再查詢一次數(shù)據(jù)庫?

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-11-14 09:44 by 赫連紫軒(puras)
    @楊雪松
    后臺(tái)如何處理
    自己隨意控制就可以了
    我做的是查了兩次數(shù)據(jù)庫
    一次是取總記錄數(shù)
    一次是取當(dāng)前頁的記錄

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-12-14 11:12 by 網(wǎng)事
    可以給個(gè)聯(lián)系的方式嗎?
    QQ或者是MSN?

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2007-12-20 13:20 by puras
    @網(wǎng)事
    啊啊
    在公司所有的聊天工具都用不了......
    MSN最近上的也很少
    MSN和GTalk:puras.he@gmail.com
    不一定什么時(shí)候上線.呵.

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2008-04-01 11:38 by 暗暗
    請(qǐng)問 把表格和表單怎么才能結(jié)合一起 就像jsp那樣 表格里不一定顯示結(jié)果集 只是用來布局

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2009-02-22 14:59 by fanfan
    請(qǐng)問可以發(fā)給我一個(gè)這樣的工程嗎。。、、、、、我是初學(xué)者,遇到很多困難
    我的QQ:272646482
    郵箱:fanxing234@126.com

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2009-04-21 17:22 by 小濤
    你好,我也是剛學(xué)這個(gè)的,能發(fā)份源碼給我嗎?huangsd@newlandcomputer.com

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2010-01-13 15:52 by 老萬
    可以給我份嗎?

    # re: 使用Ext的Grid,Form,Dialog來實(shí)現(xiàn)分頁列表,創(chuàng)建,修改,刪除功能  回復(fù)  更多評(píng)論   

    2010-01-13 15:52 by 老萬
    我的郵箱是:liudan_net@163.com
    我也是初學(xué)者

    posts - 47, comments - 124, trackbacks - 0, articles - 0

    Copyright © puras

    主站蜘蛛池模板: 亚洲第一中文字幕| 四虎永久免费观看| 台湾一级毛片永久免费| 91精品国产免费久久国语麻豆| 中文字幕av无码不卡免费| 99久久成人国产精品免费| 99久久免费国产精品热| 免费一级不卡毛片| 久久精品一本到99热免费| 蜜桃成人无码区免费视频网站 | 亚洲AV无码不卡在线播放| 亚洲国产精品VA在线看黑人| 亚洲va久久久噜噜噜久久狠狠 | 日韩免费视频播播| 国产又大又粗又硬又长免费| 亚洲乱码日产精品a级毛片久久| 久久国产成人精品国产成人亚洲| 久久激情亚洲精品无码?V| 国产亚洲精品精品国产亚洲综合| 久久国产亚洲精品麻豆| 亚洲黑人嫩小videos| 99999久久久久久亚洲| 在线观看亚洲电影| 亚洲免费无码在线| 91香蕉在线观看免费高清 | 一个人看www免费高清字幕| 中文字幕的电影免费网站| 久久精品无码精品免费专区| 91麻豆最新在线人成免费观看| 成人毛片视频免费网站观看| 免费中文字幕在线观看| 亚洲成AV人片在线观看无| 亚洲免费在线视频观看| 老司机亚洲精品影院在线观看| 中国一级特黄的片子免费| 亚洲三级在线免费观看| 成人永久免费福利视频网站| 亚洲一区二区三区在线观看精品中文| 337p日本欧洲亚洲大胆艺术| 亚洲精品自偷自拍无码| 国内精品免费久久影院|