0

对不起,伙计们,但我遇到了这两个问题。我希望你们能帮助我解决这个问题。

这是我的代码的一部分

jQuery("#VWWMODULE").jqGrid(
{
url:'loadstatic.php?q=2&t=CORE_VW_WMODULE',
datatype: "json", 
mtype: "POST", 
colNames:['Id', 'From Range', 'To Range'],
colModel:
[
    {
        name:'id',
        index:'id',
        width:7,
        editable:true,
        edittype:'text',
        editrules:{required:true},
        editoptions:{maxlength:7, size:7},
        formoptions:{rowpos:1, elmprefix:'  '},
        key:true
    },
    {
        name:'rangefrom',
        index:'rangefrom',
        width:7,
        editable:true,
        edittype:'text',
        editrules:{required:true, number:true},
        editoptions:{maxlength:7, size:7},
        formoptions:{rowpos:6, elmprefix:'  '}
    },
    {
        name:'rangeto',
        index:'rangeto',
        width:7,
        editable:true,
        edittype:'text',
        editrules:{required:true, number:true, custom:true, custom_func:frtid},
        editoptions:{maxlength:7, size:7},
        formoptions:{rowpos:7,elmprefix:'  '}
    }
]
  1. 正如您在“rangeto”中看到的那样,我正在进行自定义验证。这个验证实际上很简单。它只需要检查我们输入的'rangeto'的值是否大于'rangefrom'的值。现在我如何从'rangefrom'中获取值,以便我可以将它与自定义验证函数中的'rangeto'值进行比较?

  2. 我的第二个问题是关于索引'id'。它用作表的主键。所以在编辑模式下不应该改变它。我是说在添加模式下,用户可以随意输入。但是一旦他提交了,这个值就不能改变了。在编辑模式下,用户仍然可以看到“id”值,但他无法更改它,因为它是不可编辑的。如何才能做到这一点?

编辑

好吧,现在我遇到了另一个问题。这是一个简单的问题。

  1. 如何在添加模式下调用自定义验证函数?导致我的函数在编辑模式下不应该被调用时会给出错误消息

你们中的任何人都可以帮我解决我遇到的这三个问题吗?

编辑

从这里通过更多解释解决

4

1 回答 1

0

我想,您现在的主要问题只是id在编辑后更改网格。

首先,写下所有问题非常重要:您使用哪种编辑模式以及loadonce: true从服务器加载数据时是否使用(datatype: "json")。

只能间接地假设您使用表单编辑模式,因为您formoptionscolModel. 表单编辑有reloadAfterSubmit选项(参见文档),默认值为true. 这意味着jqGrid在成功提交一行编辑后重新加载网格的全部内容。该设置简化了与服务器的接口。如果您使用默认选项,则 id 编辑将没有问题,编辑后数据的正确排序也不会出现问题。

如果您确实决定使用reloadAfterSubmit选项,那么您必须做额外的工作。服务器应以新值响应id。在数据库中保存数据的情况下,id通常由数据库生成。您必须实现afterSubmitid回调,它应该从服务器响应中解码 new并返回它。

如果您确实使用内联编辑并且需要更改,id那么我会将您转发给答案aftersavefunc示例中的回调包含修改id.

更新:我在这里看到您在 trirand 论坛中提出了同样的问题。我想从托尼的回答中简短地评论一点。

每个添加或编辑表单都包含带有数据的表(另一个表包含在表单底部看到的按钮)。表的前两行和最后一行大多是隐藏的,并且包含(或可以包含)有用的信息:

在此处输入图像描述

例如,最后一行包含带有 的输入字段id="id_g"。该行存在事件您没有该列id(例如在您的网格中)。所以$("#id_g").val()包含编辑行的rowid。添加对话框包含字符串"_empty"的地方。

更新 2:如果您需要id在“添加和编辑”表单中显示字段但将其设为只读,则只需使用列readonly: 'readonly'的属性id(请参见此处)。下一个问题:您应该Add 和 Edit 表单使用recreateForm: true属性。

我不建议您使用reloadAfterSubmit: true,但如果您真的需要使用该选项,您应该从服务器(从savewmodule.php)返回新添加行的 id,您必须使用afterSubmit回调从服务器获取新 id响应并以记录的方式返回 ( return [true, "", new_id];)。此外,您必须在保存行后设置网格“id”列的内容。您应该修改回调参数的id属性。postdataafterSubmit

于 2013-05-10T14:08:20.707 回答