Пользовательский форматировщик раскрывающегося списка для jQuery jqGrid

Я пытаюсь отформатировать ячейку в jqGrid, чтобы, когда пользователь ее редактирует, им была представлена ​​настраиваемая реализация поля со списком (называемого activecombo), поскольку компонент select html уродлив.

Я прочитал это и посмотрел демонстрации, но они не Кажется, я делаю то, что хочу. Вот что я пробовал:

    var maritalStatusPickerFunction = function(cellvalue, options,
            rowObject) {
        var optionsArray = [ {
            "id" : 1,
            "status" : "Married"
        }, {
            "id" : 2,
            "status" : "Divorced"
        }, {
            "id" : 3,
            "status" : "Separated"
        }, {
            "id" : 4,
            "status" : "Widowed"
        }, {
            "id" : 5,
            "status" : "Unmarried"
        }

        ];
        var comboInput = $("<input type='text' value='" + cellvalue
                + "' />");
        comboInput.activecombo( {
            source : optionsArray
        });
        return comboInput;
    };

    $('#relationshipsGrid').jqGrid( {
        datatype : "local",
        colNames : [ 'Contact', 'Relationship' ],
        colModel : [ {
            name : 'contact',
            index : 'contact',
            width : 420
        }, {
            name : 'relationship',
            index : 'relationship',
            editable : true,
            formatter : maritalStatusPickerFunction,
            width : 120
        } ],
        width : 600,
        height : 100,
        cellEdit : true,
        editurl : "server.php"
    });

Но, очевидно, это не то, что я должен делать, поскольку это просто отображает объект Object во входных данных в ячейке.

Кто-нибудь может мне подсказать?

Спасибо,

Эми


person user641017    schedule 02.03.2011    source источник


Ответы (1)


Если вам нужно реализовать настраиваемую реализацию поля со списком во время редактирования ячейки, вы должны использовать настраиваемый элемент управления редактированием вместо пользовательский форматировщик.

Пользовательские средства форматирования используются для создания HTML-представления ячейки в виде строки. Пользовательские элементы управления редактированием используются для создания пользовательского элемента DOM, который будет помещен внутри <span> элемента поля редактирования. В качестве примера см. это, this и это старые ответы.

Я не знаю плагин activecombo, но мне кажется, что вы не могли бы написать собственный элемент управления редактированием. Вместо этого вы можете попытаться определить dataInit дескриптор события внутри вариантов редактирования нравится

editoptions: {
    dataInit : function (elem) { 
        $(elem).activecombo( {
            source : optionsArray
        }); 
    } 
} 

или если у вас возникнут какие-либо проблемы, такие как

editoptions: {
    dataInit : function (elem) { 
        setTimeout(function(){
            $(elem).activecombo( {
                source : optionsArray
            }); 
        },100);
    } 
} 

Кстати, вы можете сделать то же самое для поиска. Тогда пользователь сможет использовать те же преимущества в диалоге поиска / фильтрации.

person Oleg    schedule 02.03.2011