国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jquery Easyui Datagrid實現(xiàn)批量操作(編輯,刪除,添加)

2019-11-19 17:29:35
字體:
供稿:網(wǎng)友

有時候我們的后臺系統(tǒng)表單比較復(fù)雜,做過進銷存或者一些銷售訂單的都應(yīng)該有過感覺。

雖然Easyui Datagrid提供了行內(nèi)編輯,但是不夠靈活,但是我們稍微修改一下來達到批量編輯,批量刪除,批量添加的效果。

現(xiàn)在我們來看看原的編輯:來自Easyui 1.5.1的Demo <demo/datagrid/rowediting.html>

接下來,我們主要是要高度自由的編輯實現(xiàn):

1.可以同時追加多行

2.追加的行可以是任何位置

3.可以隨時進行編輯任意位置的行

4.保存再統(tǒng)一驗證

實現(xiàn)

在原有的rowediting.html進行修改!

第一:修改行的點擊事件(點擊行的時候進入編輯狀態(tài))

 function onClickCell(index, field){   if (editIndex != index) {    if (endEditing()) {     $('#dg').datagrid('selectRow', index)       .datagrid('beginEdit', index);     var ed = $('#dg').datagrid('getEditor', { index: index, field: field });     if (ed) {      ($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();     }     editIndex = index;    } else {     setTimeout(function () {      $('#dg').datagrid('selectRow', editIndex);     }, 0);    }   }  }

第二:刪除事件(點擊頂部菜單Remove刪除選中的行,點擊列表的-號,刪除減號行)

function removeit(){   if (editIndex == undefined){return}   $('#dg').datagrid('selectRow', editIndex);    $('#dg').datagrid('cancelEdit', editIndex)     .datagrid('deleteRow', editIndex);   editIndex = undefined;  }

第三:添加事件,點擊菜單的Append和+號

function append(){   var index = $('#dg').datagrid('getRowIndex', $('#dg').datagrid('getSelected'));   if (index == -1)    index = 0;   $("#dg").datagrid("insertRow", {    index: index+1,    row: {oper: "<a href='javascript:append()'>+<a> <a href='javascript:removeit()'>-<a>",status:'P'}    });  }

第四:保存(獲得操作的記錄,包括,增加,修改,刪除中的記錄)

function accept(){   if (endEditing()){    var $dg = $('#dg');    var rows = $dg.datagrid('getChanges');    if (rows.length) {     var inserted = $dg.datagrid('getChanges', "inserted");     var deleted = $dg.datagrid('getChanges', "deleted");     var updated = $dg.datagrid('getChanges', "updated");     var effectRow = new Object();     if (inserted.length) {      effectRow["inserted"] = JSON.stringify(inserted);     }     if (deleted.length) {      effectRow["deleted"] = JSON.stringify(deleted);     }     if (updated.length) {      effectRow["updated"] = JSON.stringify(updated);     }     //alert(inserted);     //alert(deleted);     //alert(updated);    }   }   //$.post("/Home/Commit", effectRow, function (rsp) {   // if (rsp) {   //  $dg.datagrid('acceptChanges');   //  bindData();   // }   //}, "JSON").error(function () {   // $.messager.alert("提示", "提交錯誤了!");   //});  }

最后我們可以獲得,上面操作的,所有:添加的行,刪除的行,更新的行!把數(shù)據(jù)傳入到數(shù)據(jù)后臺進行處理!

最后你還需要對數(shù)據(jù)進行循環(huán)校驗,可以獲得數(shù)據(jù),在控制臺輸出:

console.log(inserted);console.log(deleted);console.log(updated);


總結(jié):

最后完整代碼:(替換Easyui的rowediting.html可運行效果)

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Row Editing in DataGrid - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css" rel="external nofollow" > <link rel="stylesheet" type="text/css" href="../../themes/icon.css" rel="external nofollow" > <link rel="stylesheet" type="text/css" href="../demo.css" rel="external nofollow" > <script type="text/javascript" src="../../jquery.min.js"></script> <script type="text/javascript" src="../../jquery.easyui.min.js"></script></head><body>  <h2>Row Editing in DataGrid</h2> <p>Click the row to start editing.</p> <div style="margin:20px 0;"></div>  <table id="dg" class="easyui-datagrid" title="Row Editing in DataGrid" style="width:800px;height:auto"   data-options="    iconCls: 'icon-edit',    singleSelect: true,    toolbar: '#tb',    url: 'datagrid_data1.json',    method: 'get',    onClickCell: onClickCell,    onEndEdit: onEndEdit   ">  <thead>   <tr>    <th data-options="field:'oper',width:80">操作</th>    <th data-options="field:'itemid',width:80">Item ID</th>    <th data-options="field:'productid',width:100,      formatter:function(value,row){       return row.productname;      },      editor:{       type:'combobox',       options:{        valueField:'productid',        textField:'productname',        method:'get',        url:'products.json',       }      }">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:'textbox'">Attribute</th>    <th data-options="field:'status',width:60,align:'center',editor:{type:'checkbox',options:{on:'P',off:''}}">Status</th>   </tr>  </thead> </table> <div id="tb" style="height:auto">  <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:true" onclick="append()">Append</a>  <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="removeit()">Remove</a>  <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-save',plain:true" onclick="accept()">Accept</a>  <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-undo',plain:true" onclick="reject()">Reject</a>  <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-search',plain:true" onclick="getChanges()">GetChanges</a> </div>  <script type="text/javascript">  //編輯的行  var editIndex = undefined;  function endEditing() {   if (editIndex == undefined){return true}   $('#dg').datagrid('endEdit', editIndex);   editIndex = undefined;   return true;  }    function onClickCell(index, field){   if (editIndex != index) {    if (endEditing()) {     $('#dg').datagrid('selectRow', index)       .datagrid('beginEdit', index);     var ed = $('#dg').datagrid('getEditor', { index: index, field: field });     if (ed) {      ($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();     }     editIndex = index;    } else {     setTimeout(function () {      $('#dg').datagrid('selectRow', editIndex);     }, 0);    }   }  }  function onEndEdit(index, row){   var ed = $(this).datagrid('getEditor', {    index: index,    field: 'productid'   });   row.productname = $(ed.target).combobox('getText');  }  function append(){   var index = $('#dg').datagrid('getRowIndex', $('#dg').datagrid('getSelected'));   if (index == -1)    index = 0;   $("#dg").datagrid("insertRow", {    index: index+1,    row: {oper: "<a href='javascript:append()'>+<a> <a href='javascript:removeit()'>-<a>",status:'P'}    });  }  function removeit(){   if (editIndex == undefined){return}   $('#dg').datagrid('selectRow', editIndex);    $('#dg').datagrid('cancelEdit', editIndex)     .datagrid('deleteRow', editIndex);   editIndex = undefined;  }  function accept(){   if (endEditing()){    var $dg = $('#dg');    var rows = $dg.datagrid('getChanges');    if (rows.length) {     var inserted = $dg.datagrid('getChanges', "inserted");     var deleted = $dg.datagrid('getChanges', "deleted");     var updated = $dg.datagrid('getChanges', "updated");     var effectRow = new Object();     if (inserted.length) {      effectRow["inserted"] = JSON.stringify(inserted);     }     if (deleted.length) {      effectRow["deleted"] = JSON.stringify(deleted);     }     if (updated.length) {      effectRow["updated"] = JSON.stringify(updated);     }     //alert(inserted);     //alert(deleted);     //alert(updated);    }   }   //$.post("/Home/Commit", effectRow, function (rsp) {   // if (rsp) {   //  $dg.datagrid('acceptChanges');   //  bindData();   // }   //}, "JSON").error(function () {   // $.messager.alert("提示", "提交錯誤了!");   //});  }  function reject(){   $('#dg').datagrid('rejectChanges');   editIndex = undefined;  }  function getChanges(){   var rows = $('#dg').datagrid('getChanges');   alert(rows.length+' rows are changed!');  }  function contains(arr, obj) {   var i = arr.length;   while (i--) {    if (arr[i] === obj) {     return true;    }   }   return false;  } </script></body></html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沂源县| 会昌县| 抚宁县| 理塘县| 公安县| 墨脱县| 温州市| 黄冈市| 揭阳市| 饶阳县| 宣恩县| 芮城县| 攀枝花市| 松溪县| 辽中县| 修文县| 保山市| 屏东县| 凤翔县| 乐业县| 永仁县| 郧西县| 克拉玛依市| 达孜县| 连州市| 集安市| 开封县| 漳浦县| 柳江县| 江津市| 华亭县| 油尖旺区| 遂宁市| 兰溪市| 含山县| 许昌县| 松江区| 东乡族自治县| 柏乡县| 舟曲县| 海宁市|