Почему мои строки jqGrid недоступны для редактирования, даже если они включены? - PullRequest
2 голосов
/ 15 марта 2012

Я пытаюсь добавить jqGrid в частичное представление ASP.NET MVC3. Эта сетка будет для клиентской стороны только в качестве ярлыка калькулятора, они нажимают кнопку, и сетка генерируется на основе некоторых введенных параметров. Я могу заставить сетку отображаться и даже добавить к ней AddDataRow, однако строки нельзя редактировать, даже если поля обозначены как таковые. Я пробовал в IE9, Chrome, FF, Safari все одинаковый результат.

Я вытащил его на простую HTML-страницу, чтобы посмотреть, не связано ли это с частичным представлением MVC, но все же не повезло с редактируемыми строками. Строка выбирается, но не открывается для редактирования.

Я дважды проверил, чтобы убедиться, что я скачал полный пакет jqGrid с здесь

Строка, добавленная через addDataRow, по умолчанию недоступна для редактирования? Из всей документации на jqGrid Wiki я не смог найти, где это не так. Я прочитал вики-страницу встроенного редактирования несколько раз, и похоже, что это должно сработать. Чего мне не хватает?

недоступно для редактирования http://bigpichost.com/files/noteditable_zm7rflo0.png

Когда я нажимаю на строку, она выбирается, но не открывается для редактирования!

Вот HTML-страница, с которой я тестирую:

<html>
   <head>
    <meta charset="utf-8">
     <title>Testing JQGrid</title>
        <link rel="stylesheet" href="../Content/themes/base/jquery.ui.all.css">
        <link href="Content/ui.jqgrid.css" rel="stylesheet" type="text/css" />
        <link href="Content/themes/redmond/jquery-ui-1.8.18.custom.css" rel="stylesheet" type="text/css" />
    </head>

    <script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-ui-1.8.18.custom.js" type="text/javascript"></script>
    <script src="Scripts/grid.locale-en.js" type="text/javascript"></script>
    <script src="Scripts/jquery.jqGrid.min.js" type="text/javascript"></script>
    <body>
        <table id=jqgRequests></table>

        <script type="text/javascript">
        $(document).ready(function () {
            $('#jqgRequests').jqGrid({
                // type of data
                datatype: 'local',
                // column names
                colNames: ['Save', 'Pct-Amt', 'Request', 'French'],
                // columns model
                colModel: [
                    { name: 'Save', index: 'Save', width: 55, sortable: false, editable: true, edittype: 'checkbox', formatter: 'checkbox', align: 'center' },
                    { name: 'PctAmt', index: 'PctAmt', width: 55, editable: false, align: 'right' },
                    { name: 'Request', index: 'Request', editable: true, align: 'left' },
                    { name: 'French', index: 'French', editable: true, align: 'left' }
                    ],
                //initial sorting column
                sortname: 'Pct-Amt',
                // initial sorting direction
                sortorder: 'asc',
                // we want to display total records count
                viewrecords: false,
                // grid width
                autowidth: true,
                // grid header
                caption: "Generated Requests"
            });  // end jqgrid
            var myFirstRow = { Save: "true", PctAmt: "0", Request: "Testing this", French: "Testing Oui" };
            $('#jqgRequests').addRowData("1", myFirstRow);
        });
        </script>
    </body>
</html>

1 Ответ

1 голос
/ 15 марта 2012

Что-то должно переключить строку в редактируемое состояние. Если вы хотите, чтобы строка была в режиме редактирования после добавления, вам просто нужно вызвать метод editRow:

$("#jqgRequests").jqGrid('editRow', "1", false);

Если вы хотите, чтобы строка переключалась в редактируемое состояние при ее выборе, вы должны использовать обратный вызов onSelectRow:

var previousSelectedRowId;

$('#jqgRequests').jqGrid({
    ...
    onSelectRow: function(currentSelectedRowId) {
        if(currentSelectedRowId && currentSelectedRowId !== previousSelectedRowId) { 
            $('#jqgRequests').jqGrid('restoreRow', previousSelectedRowId); 
            previousSelectedRowId = currentSelectedRowId; 
        }
        $('#jqgRequests').jqGrid('editRow', currentSelectedRowId, false);
    },
    ...
};

Если вы хотите добавить строку, которая уже находится в режиме редактирования, вы должны использовать метод addRow:

$('#jqgRequests').jqGrid('addRow', { rowID: "1", initdata: myFirstRow });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...