<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://www.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熟妇高潮30p| 亚洲中文字幕伊人久久无码| 国产麻豆免费观看91| 中文字幕乱码免费视频| 免费黄网站在线看| 久久国产乱子伦精品免费午夜| 亚洲GV天堂GV无码男同| 亚洲综合伊人制服丝袜美腿| 亚洲av福利无码无一区二区| 亚洲精品无码鲁网中文电影| 亚洲高清无码专区视频| 免费黄色小视频网站| 国产va免费精品观看精品| 18成禁人视频免费网站| 久久精品国产免费一区| 91视频免费观看| 国产99精品一区二区三区免费| 国产亚洲精品91| 久久亚洲精品无码gv| 亚洲AV无码专区国产乱码不卡| 亚洲娇小性色xxxx| 亚洲国产成人精品激情| 亚洲国产成人91精品| 亚洲激情校园春色| 亚洲成a人片77777群色| 亚洲最大免费视频网| 亚洲第一页在线视频| 亚洲欧洲视频在线观看| 亚洲欧洲日韩国产| 亚洲乱码中文论理电影| ASS亚洲熟妇毛茸茸PICS| 亚洲 暴爽 AV人人爽日日碰| 亚洲AV日韩AV永久无码色欲|