jqGrid: нет такого метода: restoreRow - PullRequest
0 голосов
/ 15 марта 2011

У меня проблема с работой с jaGrid и ASP.NET MVC 2. Все работает, но когда я выбираю строку, я получаю эту ошибку в FireBug: необработанное исключение: jqGrid - Нет такого метода: restoreRow.Отладка Js Я понимаю, что здесь произошла ошибка:

onSelectRow: function(id) {
    if (id && id !== lastsel) {
        jQuery('#list').jqGrid('restoreRow', lastsel);
        jQuery('#list').jqGrid('editRow', id, true);
        lastsel = id;
    }

Я думаю, проблема в том, что библиотеки jqGrid включают (или порядок включения).Это моя страница Index.aspx.

<%--CSS Files--%>
<link href="/Content/jquery-ui-1.8.7.css" rel="stylesheet" type="text/css" />
<link href="/Content/ui.jqgrid.css" rel="stylesheet" type="text/css" />
<link href="/Content/ui.multiselect.css" rel="stylesheet" type="text/css" />

<%--jQuery Library--%>
<script type="text/javascript" src="../../Scripts/jquery-1.4.4.min.js"></script>

<%--Must load language tag BEFORE script tag--%>
<script type="text/javascript" src="../../Scripts/grid.locale-es.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="../../Scripts/grid.jqueryui.js"></script>
<script type="text/javascript" src="../../Scripts/grid.base.js"></script>
<script type="text/javascript" src="../../Scripts/grid.common.js"></script>
<script type="text/javascript" src="../../Scripts/grid.formedit.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.fmatter.js"></script>
<script type="text/javascript" src="../../Scripts/grid.custom.js"></script>
<script type="text/javascript" src="../../Scripts/jqDnR.js"></script>
<script type="text/javascript" src="../../Scripts/jqModal.js"></script>
<script type="text/javascript" src="../../Scripts/grid.import.js"></script>

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<table id="tableAccidentes" border=0>
    <tr>
        <td><img alt="" src="../../images/icono_victima.png" /></td>
        <td><h2>Accidentes Registrados</h2></td>
    </tr>
</table>
<script type="text/javascript">
    var lastsel;
    var Plantas = ['Pablo Podesta', 'Pilar', 'Tigre', 'Otra'];

    jQuery(document).ready(function() {
        jQuery("#list").jqGrid({
            url: '/Accidentes/ListarAccidentes',
            datatype: "json",
            colNames: ['Fecha', 'Detalle', 'Accidentado', 'Planta'],
            colModel: [
                { name:'Fecha', index:'Fecha', width:150, align:'left',
                  editable:true },
                { name:'Detalle', index:'Detalle', width:150, align:'left',
                  editable:true },
                { name:'Accidentado', index:'Accidentado', width:200,
                  align:'left', editable:true },
                { name:'planta', index:'planta', width:150, align:'left',
                  editable:true, edittype:"select",
                  editoptions: { value:Plantas} }
           ],
            onSelectRow: function(id) {
                if (id && id !== lastsel) {
                    jQuery('#list').jqGrid('restoreRow', lastsel);
                    jQuery('#list').jqGrid('editRow', id, true);
                    lastsel = id;
                }
            },
            editurl: "/Accidentes/GridSave",
            edit: {
                addCaption: "Agregar Accidente",
                editCaption: "Editar Accidente",
                bSubmit: "Guardar",
                bCancel: "Cancelar",
                bClose: "Cerrar",
                saveData: "Se modifico el registro! ¿guardar los cambios?",
                bYes: "Si",
                bNo: "No",
                bExit: "Cancelar"
            },
            pager: jQuery('#pager'),
            rowNum: 10,
            rowList: [5, 10, 20, 50],
            sortname: 'Id',
            sortorder: "desc",
            viewrecords: true,
            imgpath: '/scripts/themes/coffee/images',
            caption: 'Accidente'
        }).navGrid('#pager', { edit: true, add: true, search: false, del: false },
                  { closeAfterAdd: true, closeAfterEdit: true });
        // add custom button to export the data to excel
        jQuery("#list").jqGrid('navButtonAdd','#pager',{
            caption:"", 
            onClickButton : function () {
            jQuery("#list").jqGrid('excelExport',
                                   { url: '/Accidentes/ExportarAccidentes' });
            }
        });
    });

</script>

<%-- HTML Required--%>
<table id="list" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="pager" class="scroll" style="text-align:center;"></div>

Пожалуйста, кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 15 марта 2011

Используемые вами методы restoreRow и editRow определены в файле grid.inlinedit.js и являются частью модуля встроенного редактирования (см.больше в документации jqGrid ).Более того, вы должны удалить файл jquery.jqGrid.min.js, чтобы избежать повторения одних и тех же функций.Поскольку метод restoreRow не был определен в jquery.jqGrid.min.js, который вы используете, возможно, вы используете неверно загруженную версию jqGrid.Вам следует скачать jqGrid еще раз и убедиться, что вы проверяете модуль «Inline Editing».Если вы откроете файл jquery.jqGrid.min.js в текстовом редакторе, вы увидите в комментарии в начале файла все модули, которые были частью загрузки.

Некоторые дополнительные небольшие замечания: в документации описывает, какие параметры colModel являются значениями по умолчанию.Например, width:150 и align:'left' имеют значения по умолчанию, поэтому вы можете удалить их из определения столбца.

Свойство value для типа "select" editoptions , котороевы используете неправильно.Plantas должен быть определен как

var Plantas = { 'Pablo Podesta':'Pablo Podesta', Pilar:'Pilar',
                Tigre:'Tigre', Otra:'Otra'};

или как

var Plantas = 'Pablo Podesta:Pablo Podesta;Pilar:Pilar;Tigre:Tigre;Otra:Otra';

Подробнее см. в документации .

Параметр imgpath is устарело и должно быть удалено.Класс "scroll" также не рекомендуется, и фрагмент HTML для jqGrid может быть уменьшен до

<table id="list"></table>
<div id="pager"></div>

См. Пример здесь .

Параметр edit равенне существует в jqGrid, это параметр editGridRow от редактирования формы.Вы можете определить его как часть navGrid параметров prmEdit и prmAdd .В настоящее время вы используете только prmEdit .Возможно, использование grid.locale-XX.js из каталога i18n сделает использование параметра edit ненужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...