jqGrid:没有这样的方法:restoreRow

时间:2011-03-15 03:16:26

标签: asp.net-mvc jqgrid

我在使用jaGrid和ASP.NET MVC时遇到了问题2.一切正常,但是当我选择一行时,我在FireBug上收到此错误:未捕获的异常:jqGrid - 没有这样的方法:restoreRow。 Debugin 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 :(得分:0)

您使用的restoreRoweditRow方法在grid.inlinedit.js文件中定义,并且是the inline editing模块的一部分(请参阅{{3}中的详细信息) })。此外,您应该删除文件jquery.jqGrid.min.js以避免两次定义相同的函数。因为您使用的jquery.jqGrid.min.js中未定义方法the jqGrid documentation,所以您可能使用了错误的下载jqGrid版本。您应该再次下载jqGrid,并确保选中“内联编辑”模块。如果您在文本编辑器中打开jquery.jqGrid.min.js文件,您将在文件开头的注释中看到下载所有模块。

一些额外的小评论:在restoreRow中描述了colModel的哪些参数是默认的。例如,width:150align:'left'具有默认值,因此您可以从列定义中删除它。

您使用的the documentation的“select”类型的value属性是错误的。 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';

有关详细信息,请参阅editoptions

参数imgpaththe documentation,应将其删除。类“滚动”也已弃用,jqGrid的HTML片段可以缩减为

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

查看示例deprecated

jqGrid中不存在参数edit,它是表单编辑中editGridRow的参数。您可以将其定义为navGrid参数hereprmEdit的一部分。目前您只使用prmAdd。可能使用grid.locale-XX.js目录中的i18n将不再需要使用edit参数。