【问题标题】:JqGrid Edit Function Not Working But The Parameter is SentJqG​​rid编辑功能不起作用但参数已发送
【发布时间】:2013-07-11 10:07:19
【问题描述】:

我在使用 jqgrid 作为 jquery 框架时遇到了一些问题。

在我的例子中,我有一些表是 CRUD 函数,它连接到一个表,比如说部门

在这个表中有两个id:idms_department,department(name)。 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 的可编辑设置为可编辑:真,工作正常,但是当我将其设为可编辑时:假,因为用户无法自己添加新 ID,所以我将其设为可编辑:假,并且该行是从对话框中消失了。

我从我的萤火虫那里得到了响应,它表明该函数正在发送正确的数据,但是数据没有改变。

编辑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();
}

有什么问题吗?

【问题讨论】:

  • 抱歉,我不明白你为什么要让自动增量归档idms_department 可由用户编辑?顺便说一句,它不仅可以遵循冲突,而且数据库可能不允许这样做。在我使用的 Microsoft SQL Server 中,必须在UPDATE 之前使用SET IDENTITY_INSERT ms_department ON,这会更改自动增量列并在UPDATE 之后使用SET IDENTITY_INSERT ms_department OFF。我不使用MySQL,但它也可能存在同样的问题。
  • 是的,正因为如此,我只是将editable设置为false,但它没有更新,即使参数发送正确也是如此。
  • 你使用UPDATE ms_department SET idms_department = '$deptid', department = '$deptnm' WHERE idms_department = '$deptid'";。所以你仍然尝试改变idms_department。为什么?
  • 是的,我已经删除了 idms_department = '$deptid' 字样,但仍然无法使用

标签: php jquery mysql jqgrid


【解决方案1】:

jaGrid 发送 rowid 为 id,但你使用

$deptid = $_POST['idms_department'];

和后来的WHERE idms_department = '$deptid'"UPDATE。您必须将上述语句更改为

$deptid = $_POST['id'];

或使用 jqGrid 的prmNames: {id: "idms_department"} 选项将编辑期间将发送的"id" 变量重命名为"idms_department"

【讨论】:

  • 嗨,奥列格!啊哈,我忘记换id了!谢谢提醒。 :D
  • 嗨@oleg,很抱歉打扰你,你能看看我的问题吗? stackoverflow.com/questions/17656223/… 或许这很简单。谢谢
  • @randytan:抱歉,我现在(至少今天和明天)忙于我的主要工作。我必须完成一个项目。如果直到那时我才能找到解决问题的方法,我会尽力帮助您。如果问题解决不了,可以过两天提醒我。
  • 没关系,奥列格。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多