Добрый день.
Совсем недавно начал изучение 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;
}}
Добрый день. Совсем недавно начал изучение salesforce. Возникло несколько вопросов: Предположим есть таблица которую я вывожу на страницы visual force, три колонки имя,фамилия,дата рождения. Я реализовал поиск по имени, но никак не могу реализовать поиск по дате рождения. Как это сделать. Вопрос номер два, как реализовать сортировку в столбцах. [code]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; } }[/code]
Во-первых, темы нужно называть более конкретно.
во-вторых, в чем проблема с "реализовать поиск по дате рождения"? делайте в контроллере { get; set; }-переменную с типом Дата, пользователь выбирает значение и по нему кверите: "WHERE DatB__c = :myDate"
сортировка (как и пагинация) - это более серьезные темы. проще всего сделать на фронте с помощью какого-нибудь JS плагина. если кол-во записей не предполагается более 1000.
иначе проще делать в контроллере, но это уже более сложная история.
вот здесь можно найти про контроллерную пагинацию:
https://salesforce-developer.ru/paginatsiya-na-visualforce-stranitse-pagination-using-standardsetcontroller
про контроллерную сортировку у меня нет примеров, но в инете можно найти. Сортировака производится на уровне заброса к ДБ например "ORDER BY DatB__c DESC", вся работа в том как передать параметр сортировки (какую колонку и в каком направление сортировать) с фронта в контроллер. Но наверняка есть в нете готовые шаблоны.
Во-первых, темы нужно называть более конкретно. во-вторых, в чем проблема с "реализовать поиск по дате рождения"? делайте в контроллере { 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;
}
}
Написал вот это но не работает(( В чём я туплю, подскажите пожалуйсто [code] 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; } } [/code]
WHERE DatB__c = :SearchBoyDate LIMIT 1000
[quote="alexyakpm"] WHERE DatB__c = :SearchBoyDate LIKE :SearchQuery LIMIT 1000];[/quote] 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;
}
Выдаёт ошибку Compile Error: Illegal assignment from String to Date [code]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; }[/code]
дел.
дел.
соврал.
вот тут у тебя проблема
соврал. [quote="alexyakpm"]SearchBoysDate == null ? '%%' : '%'+SearchBoysDate+'%' ;[/quote] вот тут у тебя проблема
Вопросы по сортировке и поиску можно посмотреть у Джеффа Дугласа, дату прикрутить аналогично:
http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/
Вопросы по сортировке и поиску можно посмотреть у Джеффа Дугласа, дату прикрутить аналогично: http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/
тут описывается поиск по разным колонкам, а как реализовать сортировку в столбцах (упорядочевание). буду благодарен за ссылку или пример
[quote="AlexP"]Вопросы по сортировке и поиску можно посмотреть у Джеффа Дугласа, дату прикрутить аналогично: http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/[/quote] тут описывается поиск по разным колонкам, а как реализовать сортировку в столбцах (упорядочевание). буду благодарен за ссылку или пример
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
[quote="alexyakpm"]тут описывается поиск по разным колонкам, а как реализовать сортировку в столбцах (упорядочевание). буду благодарен за ссылку или пример[/quote] [code]ORDER BY column_list [[ASC|DESC] [NULLS FIRST|NULLS LAST]][/code] например: [code]SELECT Name, LName__c, DatB__c FROM Boy__c WHERE DatB__c = :SearchBoyDate ORDER BY Name DESC LIMIT 1000[/code]
[quote="alexyakpm"]тут описывается поиск по разным колонкам, а как реализовать сортировку в столбцах (упорядочевание). буду благодарен за ссылку или пример[/quote]Как раз сортировка там тоже прикручена - можете пощёлкать хедеры столбцов на [url=https://jeffdouglas-developer-edition.na5.force.com/examples/CustomerSearch]сайте[/url]
Большое спасибо разобрался))
Большое спасибо разобрался))
сделал как у него. но поиск не происходит вот код может подскажите в чём может быть проблема.
<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;
}
[quote="AlexP"]Вопросы по сортировке и поиску можно посмотреть у Джеффа Дугласа, дату прикрутить аналогично: http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/[/quote] сделал как у него. но поиск не происходит вот код может подскажите в чём может быть проблема. [code]<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> [/code] [code]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; }[/code]
да вроде все верно, немного смущает необычный Эвент на который вызывается JS функция:
onkeyup="doSearch();
может просто сделать кнопку и ей на онКлик привязать функцию поиска для тестовых целей...
да вроде все верно, немного смущает необычный Эвент на который вызывается JS функция: [b]onkeyup[/b]="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>
alexyakpm, там вроде можно посмотреть текущий запрос в debug-панели, если он верный (можно запустить в консоли, например), то наверное не ререндерится страница. Можно вместо doSearch() сделать как-то так: [code]<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> [/code] где searchName - проперти контроллера, его использовать в запросе вместо обращения к странице.