如何在jqgrid中向服务器端发送不可编辑的值?

时间:2013-05-28 18:34:20

标签: jquery jqgrid

我有一个简单的网格,有4列来自数据库:ID,Name,CreationDate,ModificationDate。显示所有这些字段,但只有Name是可编辑的。 ID和日期显示为纯文本。

我遇到的问题是修改记录的时间。仅将名称字段传递到服务器端。 CreationDate作为默认值发送为01/01/0001,而不是当前具有的值。

这是我的剧本:

<script type="text/javascript">
$(function () {
    $("#departamentos").jqGrid({
        url: "@Url.Action("List")",
        datatype: "json",
        mtype: "GET",
        colNames: ["@Html.DisplayNameFor(model => model.dep_id)",
                   "@Html.DisplayNameFor(model => model.dep_nombre)",
                   "@Html.DisplayNameFor(model => model.dep_creado_el)",
                   "@Html.DisplayNameFor(model => model.dep_modificado_el)",
                   " "],
        colModel: [
            { name: "dep_id", index: "dep_id", key : true, sortable:false, editable:false, editoptions:{readonly:true,size:10}, width: 90 },
            { name: "dep_nombre", index: "dep_nombre", editable:true, width: 250 },
            { name: "dep_creado_el", index: "dep_creado_el", width: 100, align: "center", formatter: "date" },
            { name: "dep_modificado_el", index: "dep_modificado_el", width: 100, align: "center", formatter: "date" },
            { name: 'acciones', width: 58, fixed: true, sortable: false, resize: false, formatter: 'actions', formatoptions: { keys: true } }
        ],
        jsonReader: {
            repeatitems: false
        },
        pager: "#pager",
        rowNum: 10,
        rowList: [10, 20, 30],
        sortname: "dep_nombre",
        sortorder: "asc",
        viewrecords: true,
        gridview: true,
        autoencode: true,
        multiselect: true,
        caption: "Departamentos",
        editurl: "@Url.Action("AjaxEdit")",
    });

    $("#departamentos").jqGrid('navGrid', '#pager', { edit: true, add: true, del: true });

    $.jgrid.edit.addCaption = "Agregar Departamento";
    $.jgrid.edit.editCaption = "Modificar Departamento";
    $.jgrid.edit.saveData = "¡El departamento fue modificado! ¿Almacena los cambios?";

    $.jgrid.formatter.date.newformat = 'd-m-Y H:i';

}); 
</script>

任何帮助将不胜感激 谢谢 海梅

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题。

最简单的方法之一是使dep_creado_el可编辑。如果编辑/添加表单将包含带有数据的行。您可以隐藏 afterShowFormbeforeShowForm回调中的行。所以你可以像the answer中那样做:

beforeShowForm: function () {
    $('#tr_dep_creado_el').hide();
}

另一种方法是扩展onclickSubmit回调或serializeEditData内的数据。