Столбец флажка jqgrid - editoptions облажается, когда в режиме редактирования формы - PullRequest
2 голосов
/ 19 мая 2011

Я определил встроенное редактирование для моей сетки, которая содержит несколько столбцов флажков, и она отлично работает.
Я установил для параметра 'navGrid' значение edit: true, и я получил красивый значок карандаша, и при нажатии на него открылась форма.
проблема в том, что я определяю свойство value столбца следующим образом: value: 'true:false', который отлично работает для встроенного редактирования (сгенерированный элемент ввода:
<input type="checkbox" disabled="disabled" offval="no" value="false">),
но в режиме редактирования формы сгенерированный ввод:

* * 1010

, что приводит к тому, что проверенное значение будет отправлено на сервер как 'true: false'.
есть идеи? прикреплен весь мой код сетки:

$("#grid").jqGrid({
        url: 'SampleScriptService.asmx/GetGridData',
        datatype: 'json',
        ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
        serializeGridData: function (postData) {
            //with ASP.Net services, all parameters must be set in the post request.
            //so here we make sure that all the parameters that the web service expects are prensent. if not- we create them with null value.
            if (!postData.username) {
                postData.username = null;
            }
            if (!postData.fullname) {
                postData.fullname = null;
            }

            if (!postData.isadministrator) {
                postData.isadministrator = null;
            }
            return JSON.stringify(postData);
        },
        mtype: "POST",
        jsonReader: { repeatitems: false, root: "d.rows", page: "d.page", records: "d.records", total: "d.total" },
        colNames: ['Username', 'Full Name', 'Administrator?', 'Password'],
        colModel: [
            { name: 'username', key: true, index: 'username', jsonmap: 'Username', 
                editable:false , edittype:'text'
            },
            { name: 'fullname', index: 'fullname', /* width: 90,*/
                editable:true, edittype:'text',
                jsonmap: 'FullName' },
            { name: 'isadministrator', index: 'isadministrator', formatter: 'checkbox', sortable: false,
                editable: true, edittype: 'checkbox', editoptions: { value: 'true:false' },
                stype: 'select', searchoptions: { value: 'none:All;true:Yes;false:No' }
                /*, width: 80*/, jsonmap: 'IsAdministrator' },
            { name: 'password', index: 'password'
                /*, width: 150*/,
                editable: true, edittype: 'password',
                formatter: function (cellvalue, options, rowObject) {
                    //never display anything in the password column
                    return '';
                },
                jsonmap: 'Password', search: false }
             ],
        rowNum: 2,
        pager: '#pager',
        viewrecords: true,
        sortname: 'username',
        caption: "Users Management",
        onSelectRow: function (id) {
            if (id && id !== currentlyEditedRowId) {
                jQuery('#grid').restoreRow(currentlyEditedRowId);
                currentlyEditedRowId = id;
            }
            jQuery('#grid').editRow(currentlyEditedRowId, true);
        },
        editurl: "SampleScriptService.asmx/UpdateUser"
    }).jqGrid('navGrid', "#pager", { edit: true, add: true, del: false, search: false })
        //add toolbar searching
    .jqGrid('filterToolbar', {});

Ответы [ 2 ]

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

@ Диззи Брайан Хай сделала предложение, которое является очень разумным решением проблемы.
поскольку я не хотел снимать флажки, я просто реализовал метод JQgridParseBool() на стороне сервера, который обрабатывает отправленное неверное значение.
Да, это довольно некрасиво, но я не мог найти другого способа обойти это.

0 голосов
/ 26 мая 2011

не ответ на ваш вопрос, на самом деле, но обходной путь,

У меня тоже были проблемы с флажком, отправляющим 1: 0 в качестве значения при проверке.

Вместо этого я вернулся к раскрывающемуся списку, и все заработало:

{
            name:'active_mdt',
            index:'active_mdt', 
            width:20, 
            align:"left",
            sortable:true,
            editable:true,
            edittype:"select",
            editoptions: {value:{'1':'Active','0':'Hidden'}},
            search:true,//
            stype:'select',
            searchoptions:{value:{'':'All','1':'Active','0':'Hidden'}}
        }], search : {
             caption: "Search...",
             Find: "Find",
             Reset: "Reset",
             matchText: " match",
             rulesText: " rules"
       },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...