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

Пользовательские контроллеры Visualforce

Добрый день! Подскажите пожалуйста новичку.Имеется объект Pencil Box, который содержит в себе записи -Pencil, с единственным полем - Pencil Name. Необходимо просто достать эти значения через visualforce page и контроллер.Делал по примеру - https://trailhead.salesforce.com/modules/visualforce_fundamentals/units/visualforce_custom_controllers . С конкретным примером все выходит - все эти данные Contacts достаются и выводятся, но свои данные я достать не могу.За меня решать не прошу- натолкнуть на мысль, что я делаю не так! Спасибо! [img]https://ibb.co/j0VHxo[/img]
Код страницы:
<apex:page controller="PenBoxListController">
<apex:form>
<apex:pageBlock title="PencilBox List" id="PencilBox_list">

<apex:pageBlockTable value="{! pencilbox }" var="pb">
<apex:column value="{! pb.PencilName }"/>
<apex:column value="{! pb.PencilBox }"/>

</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>
</apex:page>

Код контроллера:
public class ContactsListController {
private String sortOrder = 'PencilName';

public List<PencilBox> getPencil() {

List<PencilBox> results = Database.query(
'SELECT Id, PencilName, PencilBox' +
'FROM PencilBox '
);
return results;
}
}

https://ibb.co/j0VHxo

Добрый день! Подскажите пожалуйста новичку.Имеется объект Pencil Box, который содержит в себе записи -Pencil, с единственным полем - Pencil Name. Необходимо просто достать эти значения через visualforce page и контроллер.Делал по примеру - https://trailhead.salesforce.com/modules/visualforce_fundamentals/units/visualforce_custom_controllers . С конкретным примером все выходит - все эти данные Contacts достаются и выводятся, но свои данные я достать не могу.За меня решать не прошу- натолкнуть на мысль, что я делаю не так! Спасибо! [img]https://ibb.co/j0VHxo[/img]
Код страницы:
[b]<apex:page controller="PenBoxListController">
    <apex:form>
        <apex:pageBlock title="PencilBox List" id="PencilBox_list">
            
           <apex:pageBlockTable value="{! pencilbox }" var="pb">
    	   <apex:column value="{! pb.PencilName }"/>
       	   <apex:column value="{! pb.PencilBox }"/>
    	 
		   </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>[/b]
Код контроллера:
[b]public class ContactsListController {
private String sortOrder = 'PencilName';
    
public List<PencilBox> getPencil() {
    
    List<PencilBox> results = Database.query(
        'SELECT Id, PencilName, PencilBox' +
        'FROM PencilBox ' 
    );
    return results;
}
}[/b]

https://ibb.co/j0VHxo

https://trailhead.salesforce.com/modules/apex_database
https://trailhead.salesforce.com/modules/apex_database/units/apex_database_soql


The WHERE clause is optional. Let’s start with a very simple query. For example, the following query retrieves accounts and gets two fields for each account: the ID and the Phone.

SELECT Name,Phone FROM Account

The query has two parts:

SELECT Name,Phone: This part lists the fields that you would like to retrieve. The fields are specified after the SELECT keyword in a comma-delimited list. Or you can specify only one field, in which case no comma is necessary (e.g. SELECT Phone).
FROM Account: This part specifies the standard or custom object that you want to retrieve. In this example, it’s Account. For a custom object called Invoice_Statement, it is Invoice_Statement__c.

https://trailhead.salesforce.com/modules/apex_database
https://trailhead.salesforce.com/modules/apex_database/units/apex_database_soql


[quote]The WHERE clause is optional. Let’s start with a very simple query. For example, the following query retrieves accounts and gets two fields for each account: the ID and the Phone.

[code]SELECT Name,Phone FROM Account[/code]

The query has two parts:

SELECT Name,Phone: This part lists the fields that you would like to retrieve. The fields are specified after the SELECT keyword in a comma-delimited list. Or you can specify only one field, in which case no comma is necessary (e.g. SELECT Phone).
FROM Account: This part specifies the standard or custom object that you want to retrieve. In this example, it’s Account. [b]For a custom object called Invoice_Statement, it is Invoice_Statement__c[/b].[/quote]

Кастомные объекты и поля имеют префикс __с
На странице объекта есть API Name который и используется в коде.

Кастомные объекты и поля имеют префикс __с
На странице объекта есть API Name который и используется в коде.

Поправьте, если я не прав.
<apex:page controller="ContactsListController">
<apex:form>
<apex:pageBlock title="PencilBox List" id="PencilBox_list">

<apex:pageBlockTable value="{! pencilbox }" var="pb">
<apex:column value="{! pb.PencilName__c }"/>
<apex:column value="{! pb.PencilBox__c }"/>

</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>
</apex:page>

public class ContactsListController {
private String sortOrder = 'PencilName__с';

public List<PencilBox__C> getPencil() {

List<PencilBox> results = Database.query(
'SELECT Id, PencilName__c, PencilBox__c' +
'FROM PencilBox__c '
);
return results;
}
}

Поправьте, если я не прав.
<apex:page controller="ContactsListController">
    <apex:form>
        <apex:pageBlock title="PencilBox List" id="PencilBox_list">
            
           <apex:pageBlockTable value="{! pencilbox }" var="pb">
    	   <apex:column value="{! pb.PencilName__c }"/>
       	   <apex:column value="{! pb.PencilBox__c }"/>
    	 
		   </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>

public class ContactsListController {
private String sortOrder = 'PencilName__с';
    
public List<PencilBox__C> getPencil() {
    
    List<PencilBox> results = Database.query(
        'SELECT Id, PencilName__c, PencilBox__c' +
        'FROM PencilBox__c ' 
    );
    return results;
}
}

Выглядит правдоподобно,только после PencilBox__c поставь пробел или перед FROM поставь пробел. Или пиши одной строкой: 'SELECT Id, PencilName__c, PencilBox__c FROM PencilBox__c'. А еще getPencil переименуй в getPencilBox

Выглядит правдоподобно,только после PencilBox__c поставь пробел или перед FROM поставь пробел. Или пиши одной строкой: 'SELECT Id, PencilName__c, PencilBox__c FROM PencilBox__c'. А еще getPencil переименуй в getPencilBox

Неправильно вопрос задаешь!

Код никто в уме решать не будет. Хотя тут и так все понятно.

Чтобы правильно было надо написать какая конкретно проблема! Какая ошибка или какой неверный результат который получил.

Насколько я вижу у тебя тупо не компилится страница

Неправильно вопрос задаешь!

Код никто в уме решать не будет. Хотя тут и так все понятно.

Чтобы правильно было надо написать какая конкретно проблема! Какая ошибка или какой неверный результат который получил.

Насколько я вижу у тебя тупо не компилится страница

Должна быть ошибка, а в ошибке все будет понятно.

Должна быть ошибка, а в ошибке все будет понятно.

ошибка единственная- Invalid type Pencil_Box, и вот и пытаюсь разобраться как ее решить.

ошибка единственная- Invalid type Pencil_Box, и  вот и пытаюсь разобраться как ее решить.

VladislavSkor
А еще getPencil переименуй в getPencilBox

Maxim Elets
Выглядит правдоподобно,только после PencilBox__c поставь пробел или перед FROM поставь пробел. Или пиши одной строкой: 'SELECT Id, PencilName__c, PencilBox__c FROM PencilBox__c'. А еще getPencil переименуй в getPencilBox

[quote="VladislavSkor"] А еще getPencil переименуй в getPencilBox[/quote]
[quote="Maxim Elets"]Выглядит правдоподобно,только после PencilBox__c поставь пробел или перед FROM поставь пробел. Или пиши одной строкой: 'SELECT Id, PencilName__c, PencilBox__c FROM PencilBox__c'. [b]А еще getPencil переименуй в getPencilBox[/b][/quote]

Maxim Elets
VladislavSkor
А еще getPencil переименуй в getPencilBox

Maxim Elets
Выглядит правдоподобно,только после PencilBox__c поставь пробел или перед FROM поставь пробел. Или пиши одной строкой: 'SELECT Id, PencilName__c, PencilBox__c FROM PencilBox__c'. А еще getPencil переименуй в getPencilBox

Все это проделал-итог к сожалению такой же.

[quote="Maxim Elets"][quote="VladislavSkor"] А еще getPencil переименуй в getPencilBox[/quote]
[quote="Maxim Elets"]Выглядит правдоподобно,только после PencilBox__c поставь пробел или перед FROM поставь пробел. Или пиши одной строкой: 'SELECT Id, PencilName__c, PencilBox__c FROM PencilBox__c'. [b]А еще getPencil переименуй в getPencilBox[/b][/quote][/quote]
Все это проделал-итог к сожалению такой же.

Ну если говорит invalid type значит ты неправильно указываешь api name своего объекта или поля

Ну если говорит invalid type значит ты неправильно указываешь api name своего объекта или поля

getPencilBox - это же обычная переменная , которую я сам создаю, так?
А PencilBox__C- мой кастомный объект?

getPencilBox - это же обычная переменная , которую я сам создаю, так?
А PencilBox__C- мой кастомный объект?

Тут ничего не смущает?

VladislavSkor
List<PencilBox>

Тут ничего не смущает?

[quote="VladislavSkor"]List<PencilBox>[/quote]

Наверное будет глупый вопрос, но как отсюда https://ibb.co/dmC8L8 - вернуться на страницу, где я создавал свои объекты и устанавливал связи?

Наверное будет глупый вопрос, но как отсюда https://ibb.co/dmC8L8 - вернуться на страницу, где я создавал свои объекты и устанавливал связи?

Вроде как исправил все, но теперь указывает на это Unknown property 'PencilListController.Pencil_Box__c', хотя имя у него такое, подскажите, на что должен я ссылаться в данной строчке <apex:pageBlockTable value="{!Pencil_Box__c}" var="pb">?

public class PencilListController {
public class PencilBoxListController {
private String sortOrder = 'CreatedBy';
public List<Pencil_Box__c>getPencil(){
List<Pencil_Box__c> results = Database.query(
'SELECT Id, Name,CreatedBy FROM Pencil_Box__c');
return results;
}
}
}

<apex:page controller="PencilListController">
<apex:form>
<apex:pageBlock title="Pencil List" id="Pencil_Box_list">

<apex:pageBlockTable value="{!Pencil_Box__c}" var="pb">
<apex:column value="{!pb.Name}"/>
<apex:column value="{!pb.CreatedBy}"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>
</apex:page>

Вроде как исправил все, но теперь указывает на это Unknown property 'PencilListController.Pencil_Box__c', хотя имя у него такое, подскажите, на что должен я ссылаться в данной строчке <apex:pageBlockTable value="{!Pencil_Box__c}" var="pb">?

public class PencilListController {
public class PencilBoxListController {
private String sortOrder = 'CreatedBy';
    public List<Pencil_Box__c>getPencil(){
        List<Pencil_Box__c> results = Database.query(
        'SELECT Id, Name,CreatedBy FROM Pencil_Box__c');
        return results;
    }
}
}

[b]<apex:page controller="PencilListController">
    <apex:form>
        <apex:pageBlock title="Pencil List" id="Pencil_Box_list">
            
            <apex:pageBlockTable value="{!Pencil_Box__c}" var="pb">
                <apex:column value="{!pb.Name}"/>
                <apex:column value="{!pb.CreatedBy}"/>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>[/b]

VladislavSkor
<apex:pageBlockTable value="{!Pencil_Box__c}" var="pb">

Открываем документацию
https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_pageBlockTable.htm
и читаем для чего предназначен каждый из атрибутов в теге apex:pageBlockTable.

Рвение конечно привествуется, но с таким подходом никакого теплого места в IT компании не видать.

Надо разобраться в типах данных, как данные передаются из Controller на Visualforce page. Как правильно использовать <apex:...> теги. И делать это надо не методом тыка, а сперва изучив досконально всю документацию.

[quote="VladislavSkor"]<apex:pageBlockTable value="{!Pencil_Box__c}" var="pb"> [/quote]

Открываем документацию 
https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_pageBlockTable.htm
и читаем для чего предназначен каждый из атрибутов в теге apex:pageBlockTable.

Рвение конечно привествуется, но с таким подходом никакого теплого места в IT компании не видать.

Надо разобраться в типах данных, как данные передаются из Controller на Visualforce page. Как правильно использовать <apex:...> теги. И делать это надо не методом тыка, а сперва изучив досконально всю документацию.