jqgrid не является функцией, использующей onSelectRow - PullRequest
1 голос
/ 17 апреля 2011

Я видел много подобных проблем на этом сайте, поэтому я извиняюсь, что это дубликат проблемы, ответ на которую я не понял. Но вот оно: моя проблема в том, что " jQuery (" # tmpgrid "). GetCell не является функцией " (через firebug), когда этот блок кода срабатывает

        onSelectRow: function (id) {
            var listid = jQuery('#tmpgrid').getCell(id, "Item id");
            $(window.location).attr('href', '/template/details/' + listid);
        }

на этой частичной странице asp.net mvc

<table id="tmpgrid">
</table>
<div id="tmppager">
</div>
<script type="text/javascript">
    var grid = $('#tmpgrid');
    grid.jqGrid({
        url: '/template/jsontemplate',
        datatype: "json",
        height: "auto",
        autowidth: true,
        colNames: ['Item id', 'Title', 'Create Date', 'Edit Date', 'Public'],
        colModel: [
        { name: "id", index: "id", width: 25, search: false },
        { name: "Title", index: "Title", search: true, searchoptions: { sopt: ['cn']} },
        { name: "CreateDate", index: "CreateDate", width: 50, search: false },
        { name: "EditDate", index: "EditDate", width: 50, search: false },
        { name: "IsPublic", index: "IsPublic", width: 25, search: false }
        ],
        rowNum: 10,
        rowList: [10, 20, 30],
        pager: '#pager',
        sortname: 'CreateDate',
        emptyrecords: 'No records to display',
        ignoreCase: true,
        viewrecords: true,
        caption: "My Checklists",
        onSelectRow: function (id) {
            var listid = jQuery('#tmpgrid').getCell(id, "Item id");
            $(window.location).attr('href', '/template/details/' + listid);
        }
    });
    grid.jqGrid('navGrid', '#tmppager', { edit: false, add: false, del: false, searchtext: 'Search' });
</script>

Я видел сообщений Олега о проблемах с загрузкой / упорядочением скриптов, но я не верю, что это моя проблема (или, возможно, я не совсем понимаю решение) - так как я не с использованием выпуска разработчика и, таким образом, имеют только 2 файла js: grid.locale-en.js и jquery.jqgrid.min.js. Кроме того, я не уверен, относится ли это к версиям jqgrid после 3.7.2. Я использую последнюю версию 4.0.0

Я бью головой об стену здесь. Есть идеи?

Ответы [ 4 ]

2 голосов
/ 17 апреля 2011

Вы поверите, что это было взаимодействие с другим сценарием?У меня есть некоторые компоненты telerik на сайте, и когда я вытащил их компонент @ Html.Telerik (). ScriptRegistrar (), то jqGrid начал работать правильно.

Хммм ... Теперь чтобы отучить себя от этих компонентов telerik,Я все равно планировал это.

Спасибо за вашу помощь!

1 голос
/ 17 апреля 2011

Я думаю, что jqGrid использует вызовы методов в стиле jQuery-UI.Основываясь на этих примерах , вам нужно вызвать getCell следующим образом:

$('#tmpgrid').jqGrid('getCell', id, 'Item id');
0 голосов
/ 09 июня 2011

Коллега разума решил эту проблему - $ ('# xyz'), то же самое, что $ get ('# xyz') - который возвращает объект dom, для которого вы можете вызывать только методы dom.

Однако $ find () получит реальный объект с его ожидаемыми методами

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

Полагаю, вам нужно использовать стиль "новый API".Я имею в виду, что вы включили jqGrid JavaScripts примерно в следующую форму (см. документация ):

<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script type="text/javascript">
    jQuery.jgrid.no_legacy_api = true;
</script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>

В том случае, если вы должны использовать стиль "новый API" для большинства методов jqGrid, которые выиспользовать.Например

var listid = jQuery('#tmpgrid').jqGrid('getCell', id, "Item id");

вместо

var listid = jQuery('#tmpgrid').getCell(id, "Item id");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...