netsuite сохраненный поисковый фильтр с множественным выбором раскрывающегося списка

Кто-нибудь знает, есть ли способ добавить раскрывающийся фильтр с множественным выбором в набор, который отображает подсписок из уже существующего сохраненного поиска. Один из столбцов - «клиент», и я хотел бы добавить раскрывающийся список, который фильтрует клиентов в подсписке. У меня уже есть настройка кода, мне просто интересно, можно ли это сделать. Спасибо


person L.B.    schedule 17.11.2015    source источник
comment
для какого типа записи используется ваш сохраненный поиск? вы хотите сказать, что вы показываете результаты поиска в виде подсписка и хотите отфильтровать результаты поиска на основе выбранных клиентов из раскрывающегося списка?   -  person prasun    schedule 17.11.2015
comment
Сохраненный поиск относится к типу транзакции. Один из столбцов - это клиент, который извлекает имена из форм, которые я ищу. Я могу отобразить сохраненный поиск во вложенной вкладке созданного мной набора. Я просто хотел бы добавить фильтр выбора с несколькими вариантами вверху, который фильтрует по клиентам. (в основном именно то, что вы сказали). Я знаю, что мне нужно вызвать addselectoption (), мне просто трудно реализовать его, поскольку он продолжает возвращать нулевые данные из подсписка.   -  person L.B.    schedule 17.11.2015
comment
Можете ли вы добавить фрагмент кода к тому, что вы пытаетесь?   -  person prasun    schedule 17.11.2015
comment
Я ответил на bk, указав ссылку на свой код набора. Из этого подсписка, который я там создал, я просто пытаюсь добавить фильтр выбора, по которому люди могут дополнительно отсортировать подсписок. Этот фильтр выбора должен быть заполнен значениями из столбца в этом подсписке, в данном случае это просто имена клиентов.   -  person L.B.    schedule 17.11.2015
comment
Вы имеете в виду, что хотите повторно запустить поиск и отобразить только транзакции выбранных клиентов?   -  person prasun    schedule 17.11.2015
comment
Хм теперь, когда вы упомянули об этом, похоже, это единственный путь. Я как бы надеялся, что раскрывающийся фильтр просто скроет невыбранные результаты, но я не думаю, что для этого есть способ.   -  person L.B.    schedule 17.11.2015
comment
вам нужно повторно отправить ajax, это будет больше перезагрузка на стороне сервера, чем фильтрация на стороне клиента. Для фильтрации на стороне клиента вам нужно будет использовать свой собственный HTML / CSS / JS, чем nlobjform, чтобы избежать зависимости DOM от NS.   -  person prasun    schedule 17.11.2015
comment
Спасибо за вашу помощь, прасун, я попробую   -  person L.B.    schedule 17.11.2015


Ответы (2)


Вы можете использовать свой люкс как

if (request.getMethod() == 'GET'){
    var field = form.addField('custpage_customers', 'multiselect', 'Customers');
var addedCustomers = [], selectedCustomers;

var searchResults= nlapiSearchRecord('transaction','customsearchID');;


//add customers options
searchResults.forEach(function(res){
 if(addedCustomers.indexOf(res.getValue('customer')) !== -1) return;
 field.addSelectOption(res.getValue('customer'), res.getText('customer'))
});

//filter sublists
//add customer options
if(request.getParameter('customerids')){
     addedCustomers = JSON.parse(request.getParameter('customerids'));
     searchResults = searchResults.filter(function(res){
       return addedCustomers.indexOf(res.getValue(customer)) !==-1)
     });

     //if above search result reduces your search results you may just want to re-run search as below than filtering it
    //searchResults = nlapiSearchRecord('transaction','customsearchID',['customer', 'anyof', JSON.parse(request.getParameter('customerids'))]);
}

//add sublist code goes here


//set a client script
form.setScript(MY_GLOBAL_CLIENT_SCRIPT)
 // set response 
}

Затем напишите глобальный клиентский скрипт, который будет запускаться при изменении поля.

function FieldChanged(type, name)
{
    //  Prompt for additional information,  based on values already selected. 
    if ((name == YOUR_MULTISELECT_FIELD_ID)) 
    {
        //send AJAX with additional argument
        nlapiRequestURL(SUITELET_URL +  "&customerids=" +encodeURIComponent(JSON.stringify(nlapiGetFieldValue(YOUR_MULTISELECT_FIELD_ID))))
    }
}
person prasun    schedule 17.11.2015
comment
Спасибо за помощь, прасун, я попробую - person L.B.; 17.11.2015
comment
Это должно работать, за исключением того, что постепенно сокращает ваш фильтр клиентов до клиентов в последнем запросе. Лучше всегда выполнять полный запрос, а затем выполнять фильтрацию по выбранным идентификаторам клиентов. например просто получите searchResults без дополнительного фильтра и заполните раскрывающийся список. Используйте третий аргумент addSelectOption, чтобы выбрать выбранных клиентов, затем searchResults = searchResults.filter...), а затем заполните подсписок. - person bknights; 17.11.2015

Я обычно использую собственные элементы для подобных вещей и управляю ими так же, как вы управляете любым взаимодействием на стороне клиента. Обычно я добавляю поле типа inlinehtml в код своего набора, а затем заполняю список выбора событиями клиента (изменение поля и отправка источника) и вызовами AJAX.

person bknights    schedule 17.11.2015
comment
Спасибо за ответ бк. Я не знаю, правильно ли я вас понимаю, но это как бы противоречит цели наличия фильтра на странице, если он у меня есть в источнике сообщений. Я благодарен вам за вашу помощь в stackoverflow.com/ вопросы / 33742377 /. Я в основном пытаюсь добавить доступный фильтр с множественным выбором в этот набор, который просто заполняет имена клиентов, чтобы люди могли отсортировать подсписок по нему. - person L.B.; 17.11.2015
comment
Тогда разные события, но ответ тот же. Короче говоря, я не знаю ни одного Netsuite API для добавления раздела фильтра в подсписок, но вы можете легко добавить свой собственный раскрывающийся список, а затем отсортировать или повторно фильтровать свои результаты на основе выбора. Я считаю, что вы можете указать, что раскрывающийся список связан с подсписком, поместив их в отдельную группу полей, но это не будет выглядеть как встроенный фильтр. - person bknights; 17.11.2015
comment
Спасибо, бк, кажется, я пойду именно по этому пути. - person L.B.; 17.11.2015