0

У меня есть требование, в котором мне нужно отфильтровать поиск списка динамически. В моем списке есть столбец category, который может содержать значение 'A' or 'B'. Затем есть поле - 'Selection' по типу содержимого, которое может принимать значение 'A' or 'B' or 'All'. Если его 'A' мне нужен поиск списка, чтобы взять строки, где category = 'A', то же самое касается 'B'. Однако, если «Выбор» - 'All', тогда мне нужно отобразить все элементы из списка.Могу ли я применить фильтр динамически для поиска списка в Nintex Forms 2013?

Я думал о фильтрации поиска списка для столбца - 'Category'. Но проблема в том, что я в форме типа контента, у меня нет никаких переменных, которые можно установить динамически.

Я не могу использовать Фильтр по управлению, сопоставленному с 'Selection', поскольку он не работает, когда выбор 'All' (В списке нет значения под названием «Все» под категорией в списке).

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

Есть ли способ достичь этой функциональности.

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

ответ

1

Я подумал о двух решениях этой проблемы.

  1. Имейте 3 отдельных элемента управления просмотром списка, которые расположены поверх друг друга. Отфильтруйте один на A, один на B, и пусть у него нет фильтра. Затем создайте правила, чтобы показать один с фильтром, который вы хотите показать, и спрячьте остальные. Чтобы сохранить значение, вам нужно будет использовать JavaScript для копирования значения из поиска списка в скрытое текстовое поле, когда один из элементов управления изменяет значение. Это решение не очень велико и ухудшается, если у вас больше возможностей ... но он работает.

  2. Вы можете использовать JavaScript для фильтрования списка на основе выбора. Это немного сложнее, но вам не нужно больше элементов управления поиском для большего количества опций. Вам потребуется всего 2 просмотра списка без матер, сколько у вас вариантов для категории/выбора. Вам нужен тот, который отображает информацию, которую вы хотите, чтобы пользователь выбрал (нефильтрованное), а другой - из того же списка и одного и того же вида, но столбец должен быть столбцом Category (вы можете скрыть этот поиск с помощью javascript). Это код, который я использовал для получения того, что вы описываете.

    //get the original html to 'reset' the dropdown after a change 
    var originalTitle = NWF$("#" + title).html(); 
    
    //when the selection changes 
    NWF$("#" + selection).change(function() { 
    
    //put the original html in the dropdown to check all the options 
    NWF$("#" + title).html(originalTitle); 
    
    //get the new value of the selection 
    var choice = NWF$("#" + selection + " :checked")[0].value 
    
    //if choice is all then we are done because the original html is in the dropdown again with all the options 
    if (choice == "All") { 
        return; 
    } 
    
    //create the array where you will store the ids of the options that match the choice 
    var filteredIds = []; 
    
    //for each option in the category drop down, see if the text matches the choice (this is your filtering) 
    NWF$("#" + categoryDD + " option").each(function (i, n) { 
    
        //if the text of the option matches the choice add the id to the array. 
        if (n.text == choice) { 
         filteredIds.push(n.value); 
        } 
    }); 
    
    //initialize string of html 
    var filteredTitlesHTML = "" 
    
    //for each of the ids in the list, get the option html with that id from the title dropdown and add it to the resulting HTML string 
    NWF$(filteredIds).each(function (i, n) { 
        filteredTitlesHTML += NWF$("#" + title + " option[value = '" + n + "']")[0].outerHTML 
    }) 
    
    //put the html in the dropdown to show only filtered values 
        NWF$("#" + title).html(filteredTitlesHTML); 
    }) 
    

    This shows the fields I used, the labels are the javascript variable names I gave them

Вы можете увидеть на картинке в JavaScript имена переменных я дал элементы управления использовать JavaScript, представленную мной.

 Смежные вопросы

  • Нет связанных вопросов^_^