easyui的datagrid編輯(參考官網(wǎng)demo添加提交功能)

總共做過三次easyui的datagrid編輯功能。前兩次都看不懂官網(wǎng)demo扰付,最后參考網(wǎng)友方案來實(shí)現(xiàn)的堤撵,這次是根據(jù)官網(wǎng)demo來實(shí)現(xiàn),感覺官網(wǎng)的demo更精簡一些羽莺。唉实昨。。盐固。殺豬刀啊

效果圖

效果圖

代碼結(jié)構(gòu)

代碼結(jié)構(gòu)

分析

官網(wǎng)例子是這個:jquery-easyui-1.4.3\demo\datagrid\cellediting.html荒给,已經(jīng)實(shí)現(xiàn)了編輯功能。但是我們的編輯肯定不止前端編輯刁卜,還需要把數(shù)據(jù)提交到后臺志电。這里主要就是實(shí)現(xiàn)了將改變的數(shù)據(jù)提交到后臺。

  • 我們給datagrid添加onAfterEdit方法蛔趴,在這個方法中判斷數(shù)據(jù)是否有改變挑辆,是否需要提交。
  • 我們把數(shù)據(jù)提交到了后臺,數(shù)據(jù)對的話我們將數(shù)據(jù)提交鱼蝉,數(shù)據(jù)錯誤我們將數(shù)據(jù)回退洒嗤。在前端頁面使用這兩個方法即可:acceptChanges/rejectChanges
onAfterEdit:function(index,row,changes){//行號,行的所有數(shù)據(jù)魁亦,改變的數(shù)據(jù)
    console.log(index);
    console.log(row);
    console.log(changes);
    
    var change = false;//判斷是否需要提交
    for(x in changes){
        change = true;
        break;
    }
    if(change){
        console.log("在這里將改變提交到后臺渔隶。");
        //執(zhí)行正常就接受改變,否則撤銷改變
        if(accept){//一個全局變量吉挣,只有測試的時候用派撕。項(xiàng)目中應(yīng)該根據(jù)服務(wù)端返回的修改是否成功標(biāo)志來進(jìn)行判斷。
            accept = false;
            console.log("接受改變");
            $("#dg").datagrid("acceptChanges");
        }else{
            accept = true;
            console.log("回退改變");
            $("#dg").datagrid("rejectChanges");
        }
    }
}

jsp文件

WebContent/datagrid/cellediting.jsp

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%String path = request.getContextPath();%>
<%String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <base href="<%=basePath %>">
    <title>Cell Editing in DataGrid - jQuery EasyUI Demo</title>
    <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.3/themes/bootstrap/easyui.css">
     
    <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.3/themes/icon.css">
    <script type="text/javascript" src="jquery-easyui-1.4.3/jquery.min.js"></script>
    <script type="text/javascript" src="jquery-easyui-1.4.3/jquery.easyui.min.js"></script>
</head>
<body>
    <h2>Cell Editing in DataGrid</h2>
    <p>Click a cell to start editing.</p>
    <div style="margin:20px 0;"></div>
    
    <table id="dg" title="Cell Editing in DataGrid" style="width:700px;height:auto"
            data-options="
                iconCls: 'icon-edit',
                singleSelect: true,
                url: 'datagrid/datagrid_data1.json',
                method:'get'
            ">
        <thead>
            <tr>
                <th data-options="field:'itemid',width:80">Item ID</th>
                <th data-options="field:'productid',width:100,editor:'text'">Product</th>
                <th data-options="field:'listprice',width:80,align:'right',editor:{type:'numberbox',options:{precision:1}}">List Price</th>
                <th data-options="field:'unitcost',width:80,align:'right',editor:'numberbox'">Unit Cost</th>
                <th data-options="field:'attr1',width:250,editor:'text'">Attribute</th>
                <th data-options="field:'status',width:60,align:'center',editor:{type:'checkbox',options:{on:'P',off:''}}">Status</th>
            </tr>
        </thead>
    </table>

    <script type="text/javascript">
        $.extend($.fn.datagrid.methods, {
            editCell: function(jq,param){
                return jq.each(function(){
                    var opts = $(this).datagrid('options');
                    var fields = $(this).datagrid('getColumnFields',true).concat($(this).datagrid('getColumnFields'));
                    for(var i=0; i<fields.length; i++){
                        var col = $(this).datagrid('getColumnOption', fields[i]);
                        col.editor1 = col.editor;
                        if (fields[i] != param.field){
                            col.editor = null;
                        }
                    }
                    $(this).datagrid('beginEdit', param.index);
                    var ed = $(this).datagrid('getEditor', param);
                    if (ed){
                        if ($(ed.target).hasClass('textbox-f')){
                            $(ed.target).textbox('textbox').focus();
                        } else {
                            $(ed.target).focus();
                        }
                    }
                    for(var i=0; i<fields.length; i++){
                        var col = $(this).datagrid('getColumnOption', fields[i]);
                        col.editor = col.editor1;
                    }
                });
            },
            enableCellEditing: function(jq){
                return jq.each(function(){
                    var dg = $(this);
                    var opts = dg.datagrid('options');
                    opts.oldOnClickCell = opts.onClickCell;
                    opts.onClickCell = function(index, field){
                        if (opts.editIndex != undefined){
                            if (dg.datagrid('validateRow', opts.editIndex)){
                                dg.datagrid('endEdit', opts.editIndex);
                                opts.editIndex = undefined;
                            } else {
                                return;
                            }
                        }
                        dg.datagrid('selectRow', index).datagrid('editCell', {
                            index: index,
                            field: field
                        });
                        opts.editIndex = index;
                        opts.oldOnClickCell.call(this, index, field);
                    }
                });
            }
        });

        $(function(){
            $('#dg').datagrid({
                onAfterEdit:function(index,row,changes){
                    console.log(index);
                    console.log(row);
                    console.log(changes);
                    
                    var change = false;
                    //console.log(row);
                    //console.log(changes);
                    for(x in changes){
                        change = true;
                        break;
                    }
                    if(change){
                        console.log("在這里將改變提交到后臺睬魂。");
                        //執(zhí)行正常就接受改變终吼,否則撤銷改變
                        if(accept){
                            accept = false;
                            console.log("接受改變");
                            $("#dg").datagrid("acceptChanges");
                        }else{
                            accept = true;
                            console.log("回退改變");
                            $("#dg").datagrid("rejectChanges");
                        }
                    }
                }
            }).datagrid('enableCellEditing');
        });
        var accept = true;
    </script>
</body>
</html>

數(shù)據(jù)文件

WebContent/datagrid/datagrid_data1.json

{"total":28,"rows":[
    {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
    {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
    {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
    {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
    {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
    {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
    {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
    {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
    {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
    {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
]}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市氯哮,隨后出現(xiàn)的幾起案子际跪,更是在濱河造成了極大的恐慌,老刑警劉巖喉钢,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姆打,死亡現(xiàn)場離奇詭異,居然都是意外死亡肠虽,警方通過查閱死者的電腦和手機(jī)幔戏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來税课,“玉大人闲延,你說我怎么就攤上這事『妫” “怎么了垒玲?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長找颓。 經(jīng)常有香客問我合愈,道長,這世上最難降的妖魔是什么击狮? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任佛析,我火速辦了婚禮,結(jié)果婚禮上彪蓬,老公的妹妹穿的比我還像新娘说莫。我一直安慰自己,他們只是感情好寞焙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般捣郊。 火紅的嫁衣襯著肌膚如雪辽狈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天呛牲,我揣著相機(jī)與錄音刮萌,去河邊找鬼。 笑死娘扩,一個胖子當(dāng)著我的面吹牛着茸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琐旁,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼涮阔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了灰殴?” 一聲冷哼從身側(cè)響起敬特,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牺陶,沒想到半個月后伟阔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掰伸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年皱炉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狮鸭。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡宙址,死狀恐怖幢踏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤迟螺,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站古沥,受9級特大地震影響彩扔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蒸痹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一春弥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叠荠,春花似錦匿沛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鳖孤。三九已至,卻和暖如春抡笼,著一層夾襖步出監(jiān)牢的瞬間苏揣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工推姻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留平匈,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓藏古,卻偏偏與公主長得像增炭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拧晕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,846評論 25 707
  • 心血來潮隙姿,跟張先生似乎冷戰(zhàn)中,為什么似乎防症,因?yàn)橐稽c(diǎn)不想和他說話孟辑,但是涉及到娃娃的事又不得不說個一句兩句。幾年的婚姻...
    AAagatha閱讀 134評論 0 0
  • 目錄 上一節(jié):俠盜令 是非黑白 王華這時似乎有些急了:“少……少春蔫敲,你這叫……叫啥話呀饲嗽,人……人家為了救我們,剛…...
    MJ老段閱讀 681評論 11 16
  • 早上好奈嘿!#幸福實(shí)修#~每天進(jìn)步1%#幸福實(shí)修10班@彭小石--上海# 20170808(15/30) 【幸福三朵玫...
    彭小石閱讀 210評論 3 2
  • <<納蘭蕙若>> 納馥留芳暖畫屏,蘭舟曉坐岸盈盈貌虾。蕙蘭婉質(zhì)零陵凈,若似朝陽品貌清。 <<長夜無月>> 長辭短賦訴心...
    晚顰閱讀 181評論 11 6