At some point I created an example of creating a predictive search, which you could easily do with the checkboxes.
Note, however, based on how this solution works, this winnowing would also make is so winnowed out checkboxes would no longer filter the other repeater. So if you had Tom Smith checked, and you predictive-searched the checkbox list for Jane Doe then selected her, Tom Smith would not appear in the other repeater, UNLESS, upon selecting the checkbox, you blank out the search field before forcing the other repeater to update, which might feel awkward.
Here is that predictive search file. Note that it uses a similar method to the facet filters, in that the filter is created on page load, and typing in the text field forces its re-evaluation.
File: winnowing_search.rp (171.4 KB)
Note that the file has three pages.
[Edit] A workaround to the winnowing search would be to have two checkbox repeaters, hide the one that isn’t subject to the predictive search (which will be the one that the filter is based on) and then keep the two repeaters in sync, so that when you check or uncheck a checkbox in the visible one, you update the hidden one.
Note that the hidden one would have the text label that the filter is based on: the visible one doesn’t need it.
The code would go like this:
OnClick (of checkbox in visible repeater)
-- Update the isSelected column of the visible repeater (that code is already in the checkbox)
Update rows set isSelected of hidden repeater to [[This.isSelected]] where [[TargetItem.name == Item.name]]
… assuming “name” is the column that holds the text of the checkbox.
In the visible repeater, you would get rid of the code in Item Loaded that builds the filter string and forces the filtered repeater to re-evaluate (important!). The only code Item Loaded would have would be setting the text of the checkbox and checking or unchecking it based on the value of isSelected.
You could remove the checkbox entirely from the hidden repeater, since the only thing that matters is the value of isSelected. But I’d keep it at least until you get the code working.