If you want to filter date in a Data-Collection, then you have a choice of 3 different ways, how to do it.
- Without code → by using the given UI by wix.
- Code-version-1 —> using a DATASET and filter by dataset.
- Code-version-2 —> using DATABASE without any dataset.
The most flexible way is of course the last one, but also the most difficult one to program.
Here you will find a simple example, by using a DATASET.
https://russian-dima.wixsite.com/meinewebsite/blank-3
And here you will find one more upgraded and more challanging-FILTER-version…
https://www.media-junkie.com/pflegeservice
Read the belonging forum-posts, to understand all the coding.
This is an example by using a dataset-filter…
import wixData from 'wix-data';
export function A_change(event) {setMyFilter()}
export function B_change(event) {setMyFilter()}
export function C_change(event) {setMyFilter()}
export function D_change(event) {setMyFilter()}
export function E_change(event) {setMyFilter()}
export function F_change(event) {setMyFilter()}
export function G_change(event) {setMyFilter()}
$w.onReady(function () { }); function setMyFilter (parameter) {
let REFERENCE1 = "columntitle1"
let REFERENCE2 = "columntitle2" let REFERENCE3 = "columntitle3" let REFERENCE4 = "columntitle4" let REFERENCE5 = "columntitle5" let REFERENCE6 = "columntitle6" let REFERENCE7 = "columntitle7"
let ITEM1 = $w('#A').value
let ITEM2 = $w('#B').value
let ITEM3 = $w('#C').value
let ITEM4 = $w('#D').value
let ITEM5 = $w('#E').value
let ITEM6 = $w('#F').value
let ITEM7 = $w('#G').value let filter = wixData.filter()
if ($w('#A').value!==0) {filter = filter.eq(REFERENCE1, ITEM1);} if ($w('#B').value!==0) {filter = filter.eq(REFERENCE2, ITEM2);} if ($w('#C').value!==0) {filter = filter.eq(REFERENCE3, ITEM3);} if ($w('#D').value!==0) {filter = filter.eq(REFERENCE4, ITEM4);} if ($w('#E').value!==0) {filter = filter.eq(REFERENCE5, ITEM5);} if ($w('#F').value!==0) {filter = filter.eq(REFERENCE6, ITEM6);} if ($w('#G').value!==0) {filter = filter.eq(REFERENCE7, ITEM7);}
$w('#dataset2').setFilter(filter) }
$w('#viewresults').onClick(async(event) => {
await setMyFilter().then(() = {
// Refresh the dataset
$w('#dataset2').refresh();
}).then(() = {
// Repopulate the repeater's data
$w('#repeater1').forEachItem( ($item, data) => {
$item('#text89').text = data.columntitle8;
$item('#text88').text = data.columntitle9;
})
})
})
Good luck, happy coding and a happy new year!![]()