筆者最近在做一個項目的後臺,用到了EasyUI的datagrid控制項,並開啟了行內編輯功能,實際上也就是使用了edatagird這個空間,引用了edatagrid.js,一切似乎都做的順風順水,添加數據、修改數據都沒有問題,然而到刪除數據的時候居然沒有反應,折騰了好幾天也沒有任何進展。截圖如下: 前 ...
筆者最近在做一個項目的後臺,用到了EasyUI的datagrid控制項,並開啟了行內編輯功能,實際上也就是使用了edatagird這個空間,引用了edatagrid.js,一切似乎都做的順風順水,添加數據、修改數據都沒有問題,然而到刪除數據的時候居然沒有反應,折騰了好幾天也沒有任何進展。截圖如下:
前臺代碼如下:
<table id="lsdg" title="設備數據採集列表" singleSelect="true"
rownumbers="true" fitColumns="true" toolbar="#toolbar" pagination="true" idField="user_id">
<thead>
<tr>
<th field="user_id" width="50px" hidden>ID</th>
<th field="username" width="50px" editor="{type:'validatebox',options:{required:true}}">用戶名</th>
<th field="password" width="50px" editor="{type:'validatebox',options:{required:true}}">密碼</th>
……
<table>
初始化數據表格如下:
<script type="text/javascript">
$('#lsdg').edatagrid({
url:'getUsers',
saveUrl:'save',
updateUrl:'update',
destroyUrl:'destroy'
});
</script>
使用起來還是很方便的後臺是用PHP做的,通過接收提交的數據主鍵來完成相關操作,比如保存的時候接收user_id作為查詢數據表的條件,然後對相應數據進行修改
$userid=$_POST['user_id']
其他操作也是如此,但是當做到刪除的時候這樣接收數據刪除操作卻怎麼也沒有效果,折騰了半天,然後不得有看了一下edatagrid.js的源代碼(一般看源代碼有抵觸心理),然後茅塞頓開,終於找到了原因,原來在edatagrid.js里刪除函數POST的參數名稱是固定的——‘id’,代碼如下
function _del(row){
var index = dg.datagrid('getRowIndex', row);
if (index == -1){return}
if (row.isNewRecord){
dg.datagrid('cancelEdit', index);
} else {
if (opts.destroyUrl){
var idValue = row[opts.idField||'id'];
$.post(opts.destroyUrl, {id:idValue}, function(data){
……
後臺接收的時候一定要接收id參數,而不是前面說的數據表的主鍵 user_id,將
$userid=$_POST['user_id']
改為
$userid=$_POST['id']
後,刪除就順利完成了,註意只操作只針對後臺刪除函數即destory(),而其他操作無須這麼處理,接收表的主鍵就可以了。好了,困擾的問題終於解決了,如果你遇到了類似的問題,希望我的文章可以幫助你,另外,如果引用某個插件不順利的話,看看它的源代碼還是有必要的,特別對於哪些沒有說明書的插件