доза jqGrid не работает при запуске из IIS 7.2 (виртуальный каталог) - PullRequest
0 голосов
/ 01 июля 2011

Эксперт,

Я создал одно приложение и внедрил JQGrid для добавления, редактирования и удаления, Это нормально работает с запуском из Visual Studio 2010.

Теперь я создал виртуальный каталог для этого приложения, а затем пытаюсь получить доступ к странице индекса. Она не будет отображать ничего, поскольку JQGrid не был загружен. Она дает мне после ошибки: Ошибка: jQuery ("#list"). jqGrid не является функцией Исходный файл: http://localhost/CAFM/TabMaster Строка: 58

Вот фрагмент кода JQGrid.

jQuery(document).ready(function () {
        alert(jQuery("#list"));
        jQuery("#list").jqGrid({
            url: '/TabMaster/JQGridGetGridData',
            datatype: 'json',
            mtype: 'GET',
            colNames: ['col ID', 'First Name', 'Last Name'],
            colModel: [
                      { name: 'colID', index: 'colID', width: 100, align: 'left', searchoptions: { sopt: ['eq', 'ne', 'cn']} },
                      { name: 'FirstName', index: 'FirstName', width: 150, align: 'left', editable: true },
                      { name: 'LastName', index: 'LastName', width: 300, align: 'left', editable: true },
                    ],
            pager: jQuery('#pager'),
            rowNum: 100,
            rowList: [10, 50, 100, 500, 1000, 2000, 5000, 7000, 10000],
            sortname: 'colID',
            sortorder: "asc",
            viewrecords: true,
            multiselect: true,
            imgpath: '/scripts/themes/steel/images',
            caption: 'Tab Master Information'
        }).navGrid('#pager', { edit: true, add: true, del: true },
        // Edit options
                {
                savekey: [true, 13],
                reloadAfterSubmit: true,
                jqModal: false,
                closeOnEscape: true,
                closeAfterEdit: true,
                url: "/TabMaster/JQGridEdit",
                afterSubmit: function (response, postdata) {
                    if (response.responseText == "Success") {
                        jQuery("#success").show();
                        jQuery("#success").html("Record updated successfully! [" + postdata.FirstName + " " + postdata.LastName + "]");
                        jQuery("#success").fadeOut(6000);
                        return [true, response.responseText]
                    }
                    else {
                        return [false, response.responseText]
                    }
                }
            },
        // Add options
                {
                url: '/TabMaster/JQGridCreate',
                closeAfterAdd: true,
                afterSubmit: function (response, postdata) {
                    if (response.responseText == "Success") {
                        jQuery("#success").show();
                        jQuery("#success").html("Record added successfully! [" + postdata.FirstName + " " + postdata.LastName + "]");
                        jQuery("#success").fadeOut(6000);
                        return [true, response.responseText]
                    }
                    else {
                        return [false, response.responseText]
                    }
                }
            },
        // Delete options
               {
               url: '/TabMaster/JQGridRemove',
               afterSubmit: function (response, rowid) {
                   if (rowid.length > 0) {
                       jQuery("#success").show();
                       jQuery("#success").html("Record deleted successfully! [" + rowid + "]");
                       jQuery("#success").fadeOut(6000);
                       return [true, response.responseText]
                   }
                   else {
                       return [false, response.responseText]
                   }
               }
           },
                {
                    closeOnEscape: true,
                    multipleSearch: false,
                    closeAfterSearch: true
                }
                   );
    });

Ниже приведены файлы JQuery, которые я включил в свои проекты.

 <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
    <link href="@Url.Content("~/Content/themes/base/jquery.ui.theme.css")" rel="Stylesheet" type="text/css" />
    <link href="@Url.Content("~/Scripts/themes/steel/grid.css")" rel="Stylesheet" type="text/css" />
    <link href="@Url.Content("~/Scripts/themes/jqModal.css")" rel="Stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery.jqGrid.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/js/jqModal.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/js/jqDnR.js")" type="text/javascript"></script>

Ниже приведена иерархия сценариев

enter image description here

Заранее спасибо!Imdadhusen

1 Ответ

4 голосов
/ 01 июля 2011

Это не работает, потому что вы жестко закодировали свои URL:

url: '/TabMaster/JQGridGetGridData'

При работе с URL вы всегда должны использовать помощники URL:

url: '@Url.Action("JQGridGetGridData", "TabMaster")'

При развертывании приложения в виртуальном каталоге адрес больше не /TabMaster/JQGridGetGridData, а /YourApplicationName/TabMaster/JQGridGetGridData. Вот почему вы всегда должны использовать url helpers.

То же самое относится к URL-адресам параметров редактирования и путям к изображениям. Для статических ресурсов используйте @Url.Content, а для действий контроллера - @Url.Action.

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