Интересно: реализация автозаполнения jquery с jqgrid без переопределения захватывающих searchOptions - PullRequest
0 голосов
/ 11 января 2012

Олег - ты здесь ???

Я использую jqGrid, где я установил в colModel свой поиск в соответствии с типом

Как это:

var columnModel = [{ name: 'ID', index: 'ID', sortable: true,searchoptions: { sopt: ['gt']}},
{ name: 'FirstName', index: 'FirstName', sortable: true, searchoptions: { sopt: ['cn']} },
{ name: 'LastName', index: 'LastName', sortable: true ,searchoptions: { sopt: ['ge']}}
];

Теперь, после загрузки сетки, я хочу использовать следующий код, чтобы добавить автозаполнение в поле поиска сетки:

for (var i = 0; i < columnModel.length; i++) {
    var nameCol = columnModel[i].name;
    myGrid.jqGrid('setColProp', nameCol,
            {
                searchoptions: {
                    dataInit: function (elem) {
                        $(elem).autocomplete({
                            source: function (request, response) {
                                autoFillSearch(request, response, $(elem).attr('name'));
                            },
                            minLength: 1
                        });
                    }
                }
            });
}
myGrid.jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true });

Функция autoFillSearch выглядит следующим образом:

function autoFillSearch(request, response, columnToSearchName) {
    var paramters = {
        colName: columnToSearchName,
        prefixText: request.term
    };
    $.ajax({
        url: './ViewNQueryData.asmx/AutoCompleteSearch',
        type: 'POST',
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(paramters),
        success: function (data) {
            response($.each(data.d, function (index, value) {
                return {
                    label: value,
                    value: index
                }
            }));
        }
    });
}

Проблема в том, что у новых colModel есть опция поиска, созданная во второй раз, и у меня нет моего конкретного "sopt", я хочу, чтобы они были ...

Есть ли способ изменить второй запрос, чтобы он получал опцию "sopt" из оригинального colMadel?

Заранее спасибо.

1 Ответ

0 голосов
/ 11 января 2012

ответ на этот вопрос:

for (var i = 0; i < columnModel.length; i++) {
    var nameCol = columnModel[i].name;
    var soptOption = columnModel[i].searchoptions.sopt;
    myGrid.jqGrid('setColProp', nameCol,
                {
                    searchoptions: {
                        sopt: soptOption,
                        dataInit: function (elem) {
                            $(elem).autocomplete({
                                source: function (request, response) {
                                    autoFillSearch(request, response, $(elem).attr('name'));
                                },
                                minLength: 1
                            });
                        }
                    }
                });
}
...