Нужна помощь

Нужна помощь

Добрый день.

Совсем недавно начал изучение salesforce.
Возникло несколько вопросов:

Предположим есть таблица которую я вывожу на страницы visual force, три колонки имя,фамилия,дата рождения.

Я реализовал поиск по имени, но никак не могу реализовать поиск по дате рождения. Как это сделать.
Вопрос номер два, как реализовать сортировку в столбцах.

public with sharing class BoyController {

public String SearchBoyKeyword { get; set; }
public List<Boy__c> Boys {
get{
String SearchQuery = SearchBoysKeyword == null ? '%%' : '%'+SearchBoysKeyword+'%' ;
List<Boy__c> results= [SELECT Id, Name, LName__c, DatB__c
FROM Boy__c
WHERE Name
LIKE :SearchQuery LIMIT 1000];
return results;
}
set;
}

}

Во-первых, темы нужно называть более конкретно.

во-вторых, в чем проблема с "реализовать поиск по дате рождения"? делайте в контроллере { get; set; }-переменную с типом Дата, пользователь выбирает значение и по нему кверите: "WHERE DatB__c = :myDate"

сортировка (как и пагинация) - это более серьезные темы. проще всего сделать на фронте с помощью какого-нибудь JS плагина. если кол-во записей не предполагается более 1000.

иначе проще делать в контроллере, но это уже более сложная история.

вот здесь можно найти про контроллерную пагинацию:
https://salesforce-developer.ru/paginatsiya-na-visualforce-stranitse-pagination-using-standardsetcontroller

про контроллерную сортировку у меня нет примеров, но в инете можно найти. Сортировака производится на уровне заброса к ДБ например "ORDER BY DatB__c DESC", вся работа в том как передать параметр сортировки (какую колонку и в каком направление сортировать) с фронта в контроллер. Но наверняка есть в нете готовые шаблоны.

Написал вот это но не работает((
В чём я туплю, подскажите пожалуйсто

public with sharing class BoyController {


public Date SearchBoyDate { get; set; }
public List<Boy__c> Boys {
get{
Date SearchQuery = SearchBoysDate == null ? '%%' : '%'+SearchBoysDate+'%' ;
List<Boy__c> results= [SELECT Id, Name, LName__c, DatB__c
FROM Boy__c
WHERE DatB__c = :SearchBoyDate
LIKE :SearchQuery LIMIT 1000];
return results;
}
set;
}

}

alexyakpm
WHERE DatB__c = :SearchBoyDate
LIKE :SearchQuery LIMIT 1000];

WHERE DatB__c = :SearchBoyDate LIMIT 1000

Выдаёт ошибку Compile Error: Illegal assignment from String to Date

public with sharing class BoyController

public Date SearchBoyDate { get; set; }
public List<Boy__c> Boys {
get{
Date SearchQuery = SearchBoysDate == null ? '%%' : '%'+SearchBoysDate+'%' ;
List<Boy__c> results= [SELECT Id, Name, LName__c, DatB__c
FROM Boy__c
WHERE DatB__c = :SearchBoyDate
LIMIT 1000];
return results;
}
set;
}

дел.

соврал.

alexyakpm
SearchBoysDate == null ? '%%' : '%'+SearchBoysDate+'%' ;

вот тут у тебя проблема

Вопросы по сортировке и поиску можно посмотреть у Джеффа Дугласа, дату прикрутить аналогично:
http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/

AlexP
Вопросы по сортировке и поиску можно посмотреть у Джеффа Дугласа, дату прикрутить аналогично:
http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/

тут описывается поиск по разным колонкам, а как реализовать сортировку в столбцах (упорядочевание). буду благодарен за ссылку или пример

alexyakpm
тут описывается поиск по разным колонкам, а как реализовать сортировку в столбцах (упорядочевание). буду благодарен за ссылку или пример

ORDER BY column_list [[ASC|DESC] [NULLS FIRST|NULLS LAST]]

например:

SELECT Name, LName__c, DatB__c FROM Boy__c WHERE DatB__c = :SearchBoyDate ORDER BY Name DESC LIMIT 1000

alexyakpm
тут описывается поиск по разным колонкам, а как реализовать сортировку в столбцах (упорядочевание). буду благодарен за ссылку или пример
Как раз сортировка там тоже прикручена - можете пощёлкать хедеры столбцов на сайте

Большое спасибо разобрался))

AlexP
Вопросы по сортировке и поиску можно посмотреть у Джеффа Дугласа, дату прикрутить аналогично:
http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/

сделал как у него. но поиск не происходит вот код может подскажите в чём может быть проблема.

<apex:pageBlock title="Parameters search" mode="edit" id="criteria">

<script type="text/javascript">
function doSearch() {
searchServer(
document.getElementById("Name").value,
);
}
</script>

<apex:actionFunction name="searchServer" action="{!runSearch}" rerender="results,debug,errors">
<apex:param name="Name" value="" />
</apex:actionFunction>

<table cellpadding="2" cellspacing="2">
<tr>
<td style="font-weight:bold;">Name<br/>
<input type="text" id="Name" onkeyup="doSearch();"/>
</td>
</tr>

</table>

</apex:pageBlock>


public PageReference runSearch() {

String Name = Apexpages.currentPage().getParameters().get('Name');

soql = 'select Name from Book__c where Name != null';
if (!Name.equals(''))
soql += ' and Name LIKE \''+String.escapeSingleQuotes(Name)+'%\'';


runQuery();

return null;
}

да вроде все верно, немного смущает необычный Эвент на который вызывается JS функция:
onkeyup="doSearch();

может просто сделать кнопку и ей на онКлик привязать функцию поиска для тестовых целей...

alexyakpm,
там вроде можно посмотреть текущий запрос в debug-панели, если он верный (можно запустить в консоли, например), то наверное не ререндерится страница.

Можно вместо doSearch() сделать как-то так:

<input type="text" id="NameInput" onkeyup="search(this.value)" />

<apex:actionFunction action="{!search}" name="search" rerender="results,debug,errors">
<apex:param name="searchName" value="" assignTo="{!searchName}"/>
</apex:actionFunction>

где searchName - проперти контроллера, его использовать в запросе вместо обращения к странице.

Interesting information? Help us, post link to social media..