Форма редактирования jqGrid предварительно заполняется неправильными значениями. (При втором клике)

Я использую плагин jqGrid. Включены сетка и подсетка. Когда я нажимаю второй раз, чтобы отредактировать строку из основной сетки, поля заполняются неправильным значением. Подробные шаги для воспроизведения:

  1. Щелкните строку редактирования (строка основной сетки)
  2. Форма редактирования заполнена правильно, хорошо (см. первый экран)
  3. Нажмите кнопку "Отмена"
  4. Нажмите изменить строку еще раз
  5. Форма редактирования заполнена неправильно (см. второй экран)

Вот мой код:

$(function () {
        $("#list").jqGrid({
            url: 'Country/CountryListPaged',
            editurl: "Country/AddEditDeleteCountry",
            datatype: "json",
            mtype: 'POST',
            colModel: [
                          { name: 'idCountry', index: 'idCountry', label: 'Id', width: 100, editable:true, hidden:true },
                          { name: 'code', index: 'code', label: 'Код', width: 200, align:'center', editable: true, edittype:'text', editrules:{ required:true} },
                          { name: 'title', index: 'title', label: 'Название', width: 300, align: 'center', editable: true, edittype: 'text', editrules: { required: true} }
                      ],
            pager: '#pager',
            rowNum: 10,
            rowList: [10, 20],
            sortname: 'Title',
            sortorder: 'desc',
            viewrecords: true,
            gridview: true,
            caption: 'Список стран',
            height: 'auto',
            autowidth: true,
            scrollOffset: 0,
            hidegrid: false,
            subGrid: true,
            subGridRowExpanded: function (subgridId, rowId) {
                var subgridTableId, pagerId;
                subgridTableId = subgridId + "_t";
                pagerId = "p_" + subgridTableId;
                var tmp = $("#list").getRowData(rowId);
                var idCountry = tmp.idCountry;
                var countryCode = tmp.code;

                $("#" + subgridId).html("<table id='" + subgridTableId + "' class='scroll'></table><div id='" + pagerId + "' class='scroll'></div>");
                jQuery("#" + subgridTableId).jqGrid({
                    url: "Country/CountryTranslateVariantsList?idCountry=" + idCountry + "&countryCode=" + countryCode,
                    editurl: "Country/AddEditDeleteCountryTranslateVariant",
                    mtype: "POST",
                    datatype: "json",
                    colModel: [{ name: "idCountryTranslate", index: "IdCountryTranslate", editable: true, hidden: true },
                               { name: "countryTranslateCode", index: "countryTranslateCode", editable: true, hidden: true, edittype: "text", editoptions: { defaultValue: countryCode} },
                               { name: "language", index: "Language", label: "Язык", width: 100, editable: true, edittype: "select", editoptions: { value: "en:en;ru:ru;fr:fr;de:de" }, editrules: { required: true} },
                               { name: "countryTranslateTitle", index: "countryTranslateTitle", label: "Название", width: 180, editable: true, editrules: { required: true}}],
                    rowNum: 5,
                    pager: pagerId,
                    sortname: 'language',
                    sortorder: "asc",
                    viewrecords: true,
                    gridview: true,
                    height: '100%'
                });
                //SUB GRID NAVIGATION PANEL
                jQuery("#" + subgridTableId).jqGrid('navGrid', "#" + pagerId,
                                                        { edit: true, add: true, del: true, search: false, refresh: false },
                                                        {mtype: "POST", closeAfterEdit: true, reloadAfterSubmit: true }, //edit parameters
                                                        {mtype: "POST", closeAfterAdd: true, reloadAfterSubmit: true }, //add parameters
                                                        {mtype: "POST", reloadAfterSubmit: true, serializeDelData: function (postdata) {
                                                            var rowdata = $("#" + subgridTableId).getRowData(postdata.id);
                                                            return { oper: postdata.oper, idCountryTranslate: rowdata.idCountryTranslate };
                                                        }
                                                    }, //delete parameters
                                                        {}//search parameteres
                                                        );
            }
        });
        //MAIN GRID NAVIGATION PANEL
        jQuery("#list").jqGrid('navGrid', "#pager",
                    { edit: true, add: true, del: true, search: false, refresh: true },
                    { mtype: "POST", closeAfterEdit: true, reloadAfterSubmit: true }, //edit parameters
                    {mtype: "POST", closeAfterAdd: true, reloadAfterSubmit: true }, //add parameters
                    {mtype: "POST", reloadAfterSubmit: true, serializeDelData: function (postdata) {
                        var rowdata = $("#list").getRowData(postdata.id);
                        return { oper: postdata.oper, idCountry: rowdata.idCountry };
                    }
                }, //delete parameters
                    {}//search parameteres
                    );
    }); 
</script>
<div style="margin:10px auto auto auto;width:100%;height:100%;">
    <table id="list">
        <tr>
            <td/>
        </tr>
    </table>
    <div id="pager"></div>

введите здесь описание изображения

введите здесь описание изображения


person Yara    schedule 18.02.2012    source источник
comment
проблема не может быть воспроизведена с информацией, которую вы разместили. См. здесь. Вы должны опубликовать тестовые данные дополнительно.   -  person Oleg    schedule 18.02.2012
comment
Вы имеете в виду json? Если да, то для основной сетки у меня есть следующий json {page:1,total:1,records:2,rows:[{cell:[8,ukr,Украина]},{cell:[9,rus,Russia] }]}, а для подсетки у меня есть следующий json: {page:1,total:1,records:3,rows:[{cell:[21,ukr,ru,Украина]},{cell:[22,ukr ,en,Ukraine]},{cell:[23,ukr,fr,Ukraine]}]}   -  person Yara    schedule 19.02.2012


Ответы (1)


Я нашел причину. Файл "grid.subgrid.js" был включен, и это вызвало проблему. Олег, спасибо за ответ.

person Yara    schedule 18.02.2012