Jqgrid编辑弹出窗口在具有空值的字段中显示

Jqgrid编辑弹出窗口在具有空值的字段中显示,jqgrid,jqgrid-asp.net,Jqgrid,Jqgrid Asp.net,我正在使用jqgrid进行列表和基本crud操作。在其中一个页面上,表单上存在许多可为空的字段。当添加实体时某些值保留为空时,它会将这些字段保存在数据库中,并使用null表示,这很好。但当在jqgrid编辑弹出窗口中编辑同一字段时,这些字段的文本框包含。我怎样才能解决这个问题 下图是我单击网格中的一行并选择“编辑”时显示的更新对话框 更新2 我没有jqgrid.editform.js,但是提到的代码Oleg直接出现在jquery.jqgrid.min.js中。我删除了这些行,现在代码看起来像

我正在使用jqgrid进行列表和基本crud操作。在其中一个页面上,表单上存在许多可为空的字段。当添加实体时某些值保留为空时,它会将这些字段保存在数据库中,并使用null表示,这很好。但当在jqgrid编辑弹出窗口中编辑同一字段时,这些字段的文本框包含。我怎样才能解决这个问题

下图是我单击网格中的一行并选择“编辑”时显示的更新对话框

更新2 我没有jqgrid.editform.js,但是提到的代码Oleg直接出现在jquery.jqgrid.min.js中。我删除了这些行,现在代码看起来像

switch(C[G].edittype)
{
    case "password":
    case "text":
    case "button":
    case "image":
    case "textarea":
        if(A==" "||A==" "||(A.length==1 && A.charCodeAt(0)==160)) {
            A = "";
            alert("here");
        }
        alert(A);
        a("#"+r,"#"+v).val(A);
        break;
    case "select":
我放了两条警报消息来检查代码路径是否执行,但在运行页面时没有发现警报。这里可能有什么问题


谢谢

我想您应该使用相应的选项来解决问题:

editoptions:{NullIfEmpty:true} 更新:如果我现在正确理解您的问题,您可以使用表单编辑的beforeSubmit或onclickSubmit回调来修改或删除postdata参数中的所有空值。例如,可以使用for in循环枚举posdata的所有属性。如果某个参数的值为空,则可以使用delete删除该属性,或使用=null将空字符串更改为null。在这两种情况下,空编辑值的值都应为null

更新2:您使用的版本3.6.5非常旧。幸运的是,我的档案中有jqGrid的版本。我希望问题的原因是旧版本代码中的bug。如果使用jqGrid的非最小化版本,则可以打开grid.formedit.js文件并删除第832-833行:

$("#"+nm,"#"+fmid).val(tmp);
break;

案例图像:和案例文本区域之间:。代码应该与jqGrid的当前版本类似:请参阅。要解决jqGrid最小化版本中的问题,您应该搜索文本case按钮:case image:并删除a+r、+v.valA;打破它直接在case按钮:case image:之后,在case textarea:之前。

在您提到的链接中,如果设置为true,则当该字段中的数据为空时,会向服务器发送字符串“null”。我的问题不是为空字段发送null,问题是当相关列的数据在db中为null时显示空字段。不用说,我已经在一列上检查了它,它并没有解决上述问题。这个问题似乎是文本框特有的。如果我将文本框更改为文本区域,问题就会消失。有什么想法吗?@MuhammadAdeelZahid:我更新了我的答案。我希望我现在能正确理解。谢谢奥列格给我带来的痛苦。我更新了答案以进一步阐述这个问题。您可以在许多文本框中看到。我已经确认,在db中,这些字段值为null,这是可以的。我只想在呈现表单时消除此问题