2013-07-11 79 views
1

我有一些問題,使用jqgrid作爲jQuery框架。JqGrid編輯功能不工作,但參數已發送

在我的情況,我有一些表格,它是連接到一個表格讓說部門

此表

有兩個ID CRUD功能:idms_department,部門(名稱)。 idms_department是自動增量列。

,這裏是我的jqGrid語法

$(document).ready(function() { 
      //alert("start"); 
      jQuery("#departments").jqGrid({ 
       mtype:'GET', 
       url:'functions/get_dept.php', 
       editurl:'functions/edit_dept.php', 
       datatype: "JSON", 
       colNames:['Department ID','Department'], 
       colModel:[ 
        {name:'idms_department',index:'idms_department', width:150, editable:false, key:true}, 
        {name:'department',index:'department', width:800,editable:true}  
       ], 
       loadComplete: function() { 
       alert("OK"); 
       },  
       loadError: function (jqXHR, textStatus, errorThrown) { 
        alert('HTTP status code: ' + jqXHR.status + '\n' + 
          'textStatus: ' + textStatus + '\n' + 
          'errorThrown: ' + errorThrown); 
        alert('HTTP message body (jqXHR.responseText): ' + '\n' + jqXHR.responseText); 
       }, 
       rowNum:10, 
       rowList:[5,10,15], 
       pager: '#pager-departments', 
       sortname: 'idms_department', 
       viewrecords: true, 
       jsonReader: {repeatitems: true, idms_department: "idms_department" }, 
       sortorder: "asc", 
       caption:"MSC Departments" 
      }); 
      jQuery("#departments").jqGrid('navGrid','#pager-departments',{edit:true,add:true,del:true},{closeAfterEdit:true},{closeAfterAdd:true},{},{closeAfterSearch:true},{}); 
      jQuery("#departments").jqGrid('gridResize',{minWidth:350,maxWidth:850,minHeight:80, maxHeight:350}); 
      //alert("end"); 
      //start navigation system 
      $('#navigation-bar').collapsible({ 
       effect: 'none', 
     initialCollapse: true 
    }); 
      //end navigation system 
     }); 

我可以使用的jqGrid添加對話框中添加新的數據,但是當我要編輯的形式,但它不能編輯。

問題是我認爲的id。之前,可編輯idms_department被設置爲可編輯:true,工作正常,但是當我讓它可編輯時:false,因爲用戶不能自己添加新的ID,所以我讓它可編輯:false,行是從對話中消失。

我已經得到了我的螢火蟲的迴應,它顯示該功能正在發送正確的數據,但數據沒有變化。

編輯的PHP函數放在這裏:

if($oper == 'edit'){ 
    $deptid = $_POST['idms_department']; 
    echo $deptid; 
    $deptnm = $_POST['department']; 
    $upt = "UPDATE ms_department SET idms_department = '$deptid', department = '$deptnm' WHERE idms_department = '$deptid'"; 
if(mysql_query($upt)){ 
    "Edited Successfully"; 
} else { 
    die("Error Edit : " .mysql_error()); 
} 
    mysql_close(); 
} 

有什麼不對?

+0

對不起,但我不明白你爲什麼要讓用戶可編輯自動增量提交'idms_department'?順便說一句,它不僅可以遵循衝突,但它可能只是不被數據庫所允許。在我使用的Microsoft SQL Server中,必須在'UPDATE'之前使用'SET IDENTITY_INSERT ms_department ON',它在'UPDATE'之後更改autoincrelemt列並使用'SET IDENTITY_INSERT ms_department OFF'。我不使用MySQL,但它也可能存在同樣的問題。 – Oleg

+0

是的,因此,我只是將可編輯設置爲false,但它不更新,甚至難以正確發送參數。 – randytan

+0

你使用'UPDATE ms_department SET idms_department ='$ deptid',department ='$ deptnm'WHERE idms_department ='$ deptid'「;'因此你仍然嘗試更改'idms_department'。爲什麼? – Oleg

回答

0

jaGrid發送ROWID作爲id,但是你用

$deptid = $_POST['idms_department']; 
UPDATE

後來WHERE idms_department = '$deptid'"。你有上面的說法改爲

$deptid = $_POST['id']; 

或使用的jqGrid的prmNames: {id: "idms_department"}選擇重命名"id"變量,它的編輯到"idms_department"期間發送。

+0

hi oleg!aha,我忘了更改ID!謝謝提醒。:D – randytan

+0

@randytan:不客氣! – Oleg

+0

hi @oleg,抱歉打擾你,你可以看看我的問題嗎?http://stackoverflow.com/questions/17656223/jqgrid-show-error-message-from-server-response或許這是簡單的答案。謝謝 – randytan