«JqGrid - это не функция» ПОСЛЕ того, как сетка загружена и работает - PullRequest
2 голосов
/ 06 апреля 2011

Во-первых ... вот что я использую. JQuery 1.4.4 JQuery-UI 1.8.11 JqGrid 3.8.2

Вот мои включения в HTML

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js"></script>

<script type="text/javascript" src="/resources/default/scripts/jquery/jqGrid/i18n/grid.locale-en.js"></script>

<script type="text/javascript" src="/resources/default/scripts/jquery/jqGrid/jquery.jqGrid.3.8.2.min.js"></script>

Все эти ссылки на скрипты работают правильно. Вот мое определение Grid:

$('#adminPermissionsGrid').jqGrid({
    url:'/admin/permission/get-permissions',
    mtype: 'GET',
    datatype: 'json',
    jsonReader: {
        id: 'id',
        repeatitems: false
    },
    colModel: adminPermissionsColumnModel,
    pager: '#adminPermissionsPager',
    rowNum: 50,
    altRows: true,
    hidegrid: false,
    sortname: 'resource',
    autowidth: true,
    height: 450,
    gridview: true,
    viewrecords: true,
    caption: translate.admin_table_permission_caption,
    onSelectRow: function(rowId, status) {
        populatePermissionForm(rowId);
    }
})
.navGrid('#adminPermissionsPager',{add:false, edit:false, del:false, search:false, refresh:true});

А вот "populatePermissionForm ()"

function populatePermissionForm(rowId)
{
    //TODO : WTF? Why can't I use jqgrid functions here?
    var rowData = $('#adminPermissionsGrid').jqGrid('getRowData', rowId);
    ...
}

Итак, вот моя проблема. Я загружаю сетку с помощью $ (document) .ready (). Сетка работает, как и ожидалось, содержит около 20 строк данных. Когда я нажимаю на одну из строк, я получаю следующую ошибку в firebug:

$("#adminPermissionsGrid").jqGrid is not a function

Сообщается, что эта строка является виновником:

var rowData = $ ('# adminPermissionsGrid'). JqGrid ('getRowData', rowId);

Я проверил $ ​​("# adminPermissionsGrid") с помощью Firebug, и он все еще выглядит так, как будто к нему присоединен объект сетки. Я часами пытался найти ответ на этот вопрос. Кажется, что после начальной загрузки я не могу использовать какие-либо методы сетки. У меня есть HACKY обходной путь, который работает с DOM-сеткой, но я не хочу этого делать ...

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 13 декабря 2012

У меня такая же проблема с jQgrid и ZfDebug с использованием метода noConflict.

Загружен скрипт панели инструментов ZfDebugво-первых, потом он сначала ищет jQuery ... нет шансов найти его, потому что он сам первый в очереди!Таким образом, он получает старую версию jQuery от Google API, и проблемы начинаются.

Вы можете отправить ZfDebug, в качестве опции, путь к нужной версии jQuery, локально или нет.В вашем application.ini вставьте:

zfdebug.jquery_path = "/my_path_to_jquery/jquery-xxx.min.js"

(или как элемент массива опций в вашей начальной загрузке, если хотите).

0 голосов
/ 08 апреля 2011

Виновник найден! Я использую плагин ZFDebug для Zend, который опирается на jQuery. Этот плагин автоматически включает noConflict. В плагине нет опции для переключения этого, но когда я закомментирую строку noConflict ... все работает как положено.

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