1

我正在使用 jqgrid 进行列表和基本的 crud 操作。在其中一个页面上,表单上有许多可为空的字段。当添加实体时某些值留空时,它将这些字段保存在 db 中,并带有 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":

我已经放了两条警报消息来检查代码路径是否已执行,但在运行页面时我没有发现任何警报。这里可能有什么问题。

谢谢

4

1 回答 1

2

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

editoptions: {NullIfEmpty: true}

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

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

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

case "image":和之间case "textarea":。代码应该类似于当前版本的 jqGrid:请参见此处。要解决 jqGrid 的最小化版本中的问题,您应该搜索文本case "button":case "image":并删除a("#"+r,"#"+v).val(A);break;直接 aftercase "button":case "image":和 before的文本case "textarea":

于 2013-02-13T08:22:00.953 回答