Вы можете использовать подстановочные знаки в своем запросе, чтобы сделать это - поэтому вы захотите добавить элемент <apex:inputText>
на своей странице, чтобы они могли вводить поисковый термин, который записывает строковую переменную в контроллере. Затем добавьте кнопку поиска, чтобы выполнить запрос, и повторно отобразите список с новым списком контактов.
Важные части контроллера будут выглядеть примерно так:
public string SearchTerm {get; set;}
public list<ContacT> Contacts {get; set;}
public Pagereference SearchContacts()
{
// etc.
Contacts = [select Id, Name from Contact where name like : '%' + SearchTerm + '%' order by name limit 1000];
// populate list here
return null;
}
Вы можете выполнить поиск, используя функцию действия и запустив ее из события onChange поля ввода, но наличие кнопки для поиска сделает все это более отзывчивым (IMO) с точки зрения пользователя.
Примечание: я написал этот код на лету, возможно, вы не можете просто сопоставить "%" с поисковым термином таким образом или, возможно, вам даже не нужно это делать при непосредственном запросе. Обычно в этих случаях мне приходилось использовать динамический SOQL из-за других требований, когда вы строили запрос в строке:
strQuery = 'select id from contact where name like \'%' +
String.escapeSingleQuotes(SearchTerm) + '%\' order by name';
for(Contact sContact : Database.query(strQuery) ...