Регистрация  |  Вход

Нужна помощь

Добрый день.

Совсем недавно начал изучение 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]

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

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]

дел.

дел.

соврал.

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

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

соврал.
[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/

AlexP
Вопросы по сортировке и поиску можно посмотреть у Джеффа Дугласа, дату прикрутить аналогично:
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]

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

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

[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]

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

[quote="alexyakpm"]тут описывается поиск по разным колонкам, а как реализовать сортировку в столбцах (упорядочевание). буду благодарен за ссылку или пример[/quote]Как раз сортировка там тоже прикручена - можете пощёлкать хедеры столбцов на [url=https://jeffdouglas-developer-edition.na5.force.com/examples/CustomerSearch]сайте[/url]

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

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

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;
}

[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>

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

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 - проперти контроллера, его использовать в запросе вместо обращения к странице.