Добрый день! Подскажите пожалуйста новичку.Имеется объект 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://trailhead.salesforce.com/modules/apex_database
https://trailhead.salesforce.com/modules/apex_database/units/apex_database_soql
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.
Кастомные объекты и поля имеют префикс __с
На странице объекта есть 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;
}
}
Выглядит правдоподобно,только после PencilBox__c поставь пробел или перед FROM поставь пробел. Или пиши одной строкой: 'SELECT Id, PencilName__c, PencilBox__c FROM PencilBox__c'. А еще getPencil переименуй в getPencilBox
Неправильно вопрос задаешь!
Код никто в уме решать не будет. Хотя тут и так все понятно.
Чтобы правильно было надо написать какая конкретно проблема! Какая ошибка или какой неверный результат который получил.
Насколько я вижу у тебя тупо не компилится страница
Должна быть ошибка, а в ошибке все будет понятно.
ошибка единственная- Invalid type Pencil_Box, и вот и пытаюсь разобраться как ее решить.
Все это проделал-итог к сожалению такой же.
Ну если говорит invalid type значит ты неправильно указываешь api name своего объекта или поля
getPencilBox - это же обычная переменная , которую я сам создаю, так?
А PencilBox__C- мой кастомный объект?
Тут ничего не смущает?
Наверное будет глупый вопрос, но как отсюда 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>
Открываем документацию
https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_pageBlockTable.htm
и читаем для чего предназначен каждый из атрибутов в теге apex:pageBlockTable.
Рвение конечно привествуется, но с таким подходом никакого теплого места в IT компании не видать.
Надо разобраться в типах данных, как данные передаются из Controller на Visualforce page. Как правильно использовать <apex:...> теги. И делать это надо не методом тыка, а сперва изучив досконально всю документацию.