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

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

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

    作者:赫連紫軒(puras)

    前面已經把列表,分頁,刪除等部分說完了,這里再把創建和修改說說,基本的功能就差不多了.

    創建

    在這里,創建和修改者是用Dialog的形式來做的,首先則需要創建相應的DIV:

    <!-- add div -->
        <div id="a-addInstance-dlg" style="visibility:hidden;">
            <div class="x-dlg-hd">添加權限</div>
            <div class="x-dlg-bd">
                <div id="a-addInstance-inner" class="x-layout-inactive-content">
                    <div id="a-addInstance-form"></div>
                </div>
            </div>       
        </div>

    之后就是在這個DIV里創建Form了,直接用Ext的Form組件:

    createNewForm : function() {       
                    this.name_tf = new Ext.form.TextField({
                        fieldLabel : '名稱',
                        name : 'name',
                        allowBlank : false
                    });
                    this.description_tf = new Ext.form.TextField({
                        fieldLabel : '描述',
                        name : 'description'
                    });
                    this.addForm = new Ext.form.Form({
                        labelAlign : 'right',
                        url : '/wit/add.shtml'
                    });
                    this.addForm.column({
                        width : 430,
                        labelWidth : 120,
                        style : 'margin-left : 8px; margin-top : 8px;'
                    });
                    this.addForm.fieldset(
                        {id : 'desc', legend : '請填寫字段值'},
                        Grid.name_tf,
                        Grid.description_tf
                    );
                    this.addForm.applyIfToFields({ width : 255 });
                    this.addForm.render('a-addInstance-form');
                    this.addForm.end();
                }

    之后別忘了在加載的時候調用這個方法:

    this.createNewForm();

    Form窗體定義完,現在可以處理前面說的過那個創建按鈕的事件了,在這里事件處理的方法名為doAdd:

    doAdd : function() {
                    if (!Grid.addInstanceDlg) {
                        Grid.addInstanceDlg = Grid.createNewDialog('a-addInstance-dlg');
                        Grid.addInstanceDlg.addButton('重置', Grid.resetForm, Grid.addInstanceDlg);
                        Grid.addInstanceDlg.addButton('保存', Grid.saveNewForm, Grid.addInstanceDlg);
                        var layout = Grid.addInstanceDlg.getLayout();
                        layout.beginUpdate();
                        var t = new Ext.ContentPanel('a-addInstance-inner', {title : 'create account'});
                        layout.add('center', new Ext.ContentPanel('a-addInstance-inner', {title : '添加權限'}));
                        layout.endUpdate();           
                    }                   
                    Grid.addInstanceDlg.show();           
                }

    首先用Grid.createNewDialog創建一個LayoutDialog,之后再把添加里的特有的按鈕加上去,然后更新一下Dialog的布局,把它顯示出來,這時就可以看到添加的窗體了:

    add

    呵,窗體做的很難看,因為只是為了實現功能,沒有在這方便下什么功夫.

    Grid.createNewDialog用于創建和修改時創建對話框,代碼如下:

    createNewDialog : function(title) {
                    var newDialog = new Ext.LayoutDialog(title, {
                        modal : true,
                        autoTabs : true,
                        proxyDrag : true,
                        resizable : false,
                        width : 480,
                        height : 302,
                        shadow : true,
                        center : {
                            autoScroll : true,
                            tabPosition : 'top',
                            closeOnTab : true,
                            closeOnTab : true,
                            alwaysShowTabs : false
                        }
                    });
                    newDialog.addKeyListener(27, newDialog.hide, newDialog);
                    newDialog.addButton('取消', function() { newDialog.hide(); } );
                    return newDialog;           
                }

    如果添加成功,則自動關閉這個Dialog,并重新加載列表,如果添加失敗,只是簡單的彈出一個對話框,提示失敗,其實這里可以做的更人性化一些,可以在服務器端傳回錯誤的原因,比如某字段有問題,可以紅色顯示出其輸入框等等.這里服務端返回的JSON數據與刪除返回的一樣.

    處理代碼如下:

    saveNewForm : function() {
                    if (Grid.addForm.isValid()) {
                        Grid.addForm.submit({
                            waitMsg : '正在保存數據...',
                            reset : true,
                            failure : function(form, action) {
                                Ext.MessageBox.alert('友情提示', action.result.info);
                            },
                            success : function(form, action) {
                                Grid.addInstanceDlg.hide();
                                Grid.ds.reload();
                            }
                        });
                    } else {
                        Ext.MessageBox.alert('錯誤', '字段填寫不正確!');
                        Grid.name_tf.focus();
                    }
                }

    修改

    修改則和創建差不多了,不同的有兩點,一是事件是在列表的行上雙擊,來觸發事件,彈出修改對話框,另一個則是需要在顯示對話框的同時,把所要修改的記錄的數據加載進來.

    首先在列表加上事件捕捉:

    this.grid.on('rowdblclick', this.onRowDbClick, this);   

    下面則是處理這個事件的代碼:

    onRowDbClick : function(grid, rowIndex, e) {
                    var selectId = this.ds.data.items[rowIndex].id;
                    var roleData = new Ext.data.Store({
                        proxy : new Ext.data.HttpProxy({url : '/wit/edit.shtml?id=' + selectId}),
                        reader : new Ext.data.JsonReader({}, ['id', 'name', 'description']),
                        remoteSort : false
                    });
                    roleData.on('load', function() {
                        Grid.updateId = roleData.getAt(0).data['id'];
                        Grid.name_show.setValue(roleData.getAt(0).data['name']);
                        Grid.description_show.setValue(roleData.getAt(0).data['description']);
                        if (!Grid.updateInstanceDlg) {
                            Grid.updateInstanceDlg = Grid.createNewDialog('a-updateInstance-dlg');
                            Grid.updateInstanceDlg.addButton('保存', Grid.saveUpdateForm, Grid.updateInstanceDlg);
                            var layout = Grid.updateInstanceDlg.getLayout();
                            layout.beginUpdate();
                            layout.add('center', new Ext.ContentPanel('a-updateInstance-inner', {title : '修改權限'}));
                            layout.endUpdate();
                        }
                        Grid.updateInstanceDlg.show();
                    });
                    roleData.load();
                }

    這里做了兩件事,一個是把欲修改的數據加載到本地, 服務端返回的數據結構為:

    ([{"id":"12","description":"test role 12","name":"puras 12"}])

    一個是將數據置入Form窗體的字段中,并將Dialog顯示出來.修改的Form與創建的相似:

    createEditForm : function() {
                    this.name_show = new Ext.form.TextField({
                        fieldLabel : '名稱',
                        name : 'name',
                        allowBlank : false
                    });
                    this.description_show = new Ext.form.TextField({
                        fieldLabel : '名稱',
                        name : 'description'
                    });
                    this.editForm = new Ext.form.Form({
                        labelAlign : 'right',
                        url : '/wit/edit_ok.shtml'
                    });
                    this.editForm.column({width : 430, labelWidth : 120, style : 'margin-left : 8px; margin-top : 8px;'});
                    this.editForm.fieldset(
                        {legend : '請更新字段值'},
                        Grid.name_show,
                        Grid.description_show
                    );
                    this.editForm.applyIfToFields({width : 255});
                    this.editForm.render('a-updateInstance-form');
                    this.editForm.end();
                }

    這個Form對應的Div為:

    <!-- update div -->
        <div id="a-updateInstance-dlg" style="visibility:hidden;">
            <div class="x-dlg-hd">修改權限</div>
            <div class="x-dlg-bd">
                <div id="a-updateInstance-inner" class="x-layout-inactive-content">
                    <div id="a-updateInstance-form"></div>
                </div>
            </div>
        </div>

    雙擊某條記錄,則會彈出修改Dialog了,大概的樣子如下:

    edit

    修改的處理事件與添加類似,需要注意的地方就是ID是怎么傳過去的:

    saveUpdateForm : function() {
                    if (Grid.editForm.isValid()) {
                        Grid.editForm.submit({
                            params : { id : Grid.updateId},
                            waitMsg : '正在更新數據...',
                            reset : false,
                            failure : function(form, action) {
                                    Ext.MessageBox.alert('友情提示', action.result.info);
                                },
                            success : function(form, action) {
                                Grid.updateInstanceDlg.hide();
                                Grid.ds.reload();
                            }
                        });                   
                    } else {
                        Ext.MessageBox.alert('錯誤', '字段填寫不正確!');
                    }
                }

    到此就Over啦,列表,添,刪,改都OK了.在沒有做的時候,總是感覺找不到入口點,做完之后才發現,原來自己擔心的問題,都不是問題,哈,想想,還是挺簡單的.

    Feedback

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-09-11 16:16 by august
    老兄,能否參考一下你的源代碼?我正在研究這部分內容,很有參考價值,我的郵箱:zyf0808@yeah.net.謝謝

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-09-11 17:34 by 赫連紫軒(puras)
    @august
    實在不好意思啊
    因為只是臨時為了測試用的
    所以代碼寫的很亂
    等有時間我整理一下
    再發給各位朋友

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

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-09-21 11:13 by august
    關于分頁你能不能詳細解釋一下呢?post過去兩個參數,start和limit,我在后臺該怎么利用?如果利用這兩個參數取數據的話,那么只能顯示一頁,也即記錄集就只有pagesize那么多數據了。。。

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-09-24 08:58 by 赫連紫軒(puras)
    @august
    start:是記錄開始的位置
    limit:是記錄的條數
    有這些不足夠你用來分頁的嘛?
    難道你想一頁里把所有的記錄全返回來
    那多浪費啊

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-09-28 23:57 by 小貓
    我正在學EXT,可以發你的源代碼我參考下嗎?謝謝!
    EM:106283381@163.com

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-10-08 18:43 by Joseph
    請問一下this.createNewForm();是在那裡調用呢?
    麻煩幫忙我謝謝

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-10-08 18:49 by Joseph
    麻煩各位高手可以在LayoutDialog上要 Add Form這段上提供更詳細的作法嗎
    試很久一直出現錯誤訊息。謝謝幫忙

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-10-09 08:35 by 赫連紫軒(puras)
    @Joseph
    是在init方法里調用的
    為的是在用這個Form之前把其加載進去
    要是在每次調和的時候都調用
    就會重復加載了
    這樣做可以避免重復加載

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-10-09 08:40 by 赫連紫軒(puras)
    @Joseph
    LayoutDialog上Add Form
    有什么問題?
    描述一下

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-10-09 09:56 by Joseph
    dear puras
    可否麻煩你釋出整個原始碼呢?
    在文章中無提到createNewForm 等等一些程式碼
    這樣看著文章實際操作的話,會缺東缺西的無法正常執行

    我現的問題在 LayoutDialog上加 Form的TextField都會出現錯誤
    this.addForm.render('a-addInstance-form');
    以上無法正常 render至該 DIV

    還有 this.addForm.fieldset(
    {id : 'desc', legend : '請填寫字段值'},
    Grid.name_tf,
    Grid.description_tf
    );
    Grid.name_tf的 Grid 在文章中就沒提到定義在何處

    希望作者能釋出更完整的原始碼~~謝謝你抽空時間幫助我。

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-10-15 10:22 by xpy
    能給我發一份源代碼,謝謝,
    z278440337@126.com
    謝謝,學習學習

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-10-16 08:39 by 赫連紫軒(puras)
    @Joseph
    http://m.tkk7.com/puras/archive/2007/09/12/144478.html
    這里是前端頁面的代碼
    所有的JS都在這里了

    至于后端的
    只是一些數據的反回而已
    相信你看了前端的
    一定能把后端的處理好的.
    ^_^

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)[未登錄]  回復  更多評論   

    2007-11-08 09:05 by 影子
    后續部分我找到了,謝謝!

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-12-06 11:59 by keke
    現在用EXT2。0這個程序就運行不了,很多方法都改了,能不能改成2。0版本的啊。本人剛學,還不會改。

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2007-12-06 15:41 by puras
    @keke
    2.0暫時還沒有看
    不太了解都有什么地方改了
    不過我想大致的道理還是一樣的
    自己動手試試

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2008-08-05 11:08 by gotextile
    不錯,,,

    # re: 使用Ext的Grid,Form,Dialog來實現分頁列表,創建,修改,刪除功能(續)  回復  更多評論   

    2008-08-18 14:19 by 開源否社區
    贊一個。

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

    Copyright © puras

    主站蜘蛛池模板: 免费看的一级毛片| 亚洲成a人片在线看| 日本免费污片中国特一级| 亚洲黄色免费电影| 免费看的一级毛片| a级日本高清免费看| 免费国产精品视频| 日本免费污片中国特一级| 亚洲精品国产suv一区88| 亚洲乱码无码永久不卡在线 | 一级视频免费观看| 亚洲综合色丁香麻豆| 免费又黄又爽又猛的毛片| 久久青草免费91线频观看站街| 亚洲国产成人精品无码区二本 | 成全视频在线观看免费| 亚洲偷自精品三十六区| 在线观看国产区亚洲一区成人 | 国产亚洲精品精品国产亚洲综合| 精品国产免费人成电影在线观看| 亚洲一区二区三区电影| 国产精品二区三区免费播放心 | 日本中文字幕免费高清视频| 亚洲精品国产av成拍色拍| 亚洲国产精品久久久久婷婷老年| 日本在线免费观看| 黄色网页免费观看| 黑人大战亚洲人精品一区 | 久久青青草原亚洲av无码| 在线观看无码AV网站永久免费| 亚洲精品午夜久久久伊人| 久久久青草青青国产亚洲免观 | 在线观看午夜亚洲一区| 精品免费国产一区二区| 日韩内射激情视频在线播放免费 | 亚洲精品乱码久久久久久按摩| 日本免费一区二区三区最新 | 1000部禁片黄的免费看| a在线观看免费视频| 全部一级一级毛片免费看| 国产亚洲玖玖玖在线观看|