2013-07-11 41 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