Нужна помощь в создании visual page и Apex controller

Мне надо создать Vfp и Alex controller, на странице должны быть поля выбора, поля ввода даты со временем, кнопка по нажатии которой создаётся новая запись, вообще должно быть как на втором фото
А у меня получается как на первом.
Я только второй день этим занимаюсь и не понимаю, как достать данные из полей ,что я создавала , как это перенести в код(((

Добрый день! Можете посмотреть статью по Visualforce page я там описывал подробно как это сделать. Посмотрите ее если что-то не понятно пишите отвечу.


У меня вот что получилось, в посте не ту картинку добавила

Спасибо. Сейчас гляну

Добрый день! Можете показать свой код, который вы используете для вывода данных на страницу. Это apex:pageBlockTable или apex:repeat ?

<apex:page >

Appointment Table

<apex:pageBlock title="Select a doctor">
    <apex:pageBlockSection title="doctor">
    </apex:pageBlockSection>
</apex:pageBlock>
 <apex:pageBlock title="Working Hours Start    ">
</apex:pageBlock>
<apex:pageBlock title="Working Hours Ends    ">
</apex:pageBlock>
 <apex:pageBlock title="Select a patient">
    <apex:pageBlockSection title="patient">
    </apex:pageBlockSection>
</apex:pageBlock>

</apex:page>

Для автоматически “развернутых” pageBlockSection можно задать параметр:
<apex:pageBlockSection collapsible=“false” … >…</apex:pageBlockSection >

Вместо нескольких apex:pageBlock можно попробовать использовать один единственный с вложенными apex:pageBlockSection, приблизительно структура такая:


<apex:page >
    <style>
        body .bPageBlock .pbBody .alfa .pbSubheader{
            background-color:#FF000000;
        }
        body .bPageBlock .pbBody .alfa .pbSubheader h3{
            color:#000;
        }
    </style>
    <apex:form >
        <apex:pageBlock title="Appoitments table"> 
            <apex:outputPanel styleClass="alfa" layout="block">
                <apex:pageBlockSection id="bs_doctor" title="Select a doctor" collapsible="false"  rendered="true" > ..... </apex:pageBlockSection>
            </apex:outputPanel>
            <apex:outputPanel styleClass="alfa" layout="block">
                <apex:pageBlockSection id="bs_wh_start" title="Working Hours Start" collapsible="false"  rendered="true" > ..... </apex:pageBlockSection>
            </apex:outputPanel>
            <apex:outputPanel styleClass="alfa" layout="block">
                <apex:pageBlockSection id="bs_wh_end" title="Working Hours End" collapsible="false"  rendered="true" > ..... </apex:pageBlockSection>
            </apex:outputPanel>
            <apex:outputPanel styleClass="alfa" layout="block">
                <apex:pageBlockSection id="bs_patient" title="Select a patient" collapsible="false"  rendered="true" > ..... </apex:pageBlockSection>
            </apex:outputPanel>
        </apex:pageBlock>
    </apex:form>

Result:
AppTable

ну вот я создала поле доктор, а как мне туда данные моих докторо ввсунуть, которые я ранее создавала?

Либо Вы бросили неполный код, либо у Вас на странице нет элемента для отображения данных из коллекции - это apex:PageBlockTable.
В простейшем виде он должен выглядеть вот так:

<apex:pageBlockSection  columns="1" >
     <apex:pageBlockTable value="{!list}" var="variable" columns="1" >
         <apex:column headerValue="Data source field" headerClass="headerStyle">
             <apex:OutputText value="{!variable}"/> 
         </apex:column>
     </apex:pageBlockTable>    
</apex:pageBlockSection>

list - это коллекция которую надо отобразать
variable - это элемент коллекции
columns=“1” - этот аттрибут определяет сколько столбцов будет у таблицы для отображения

спасибо, я видно не до конца разобралась, то, что я скинула - это целый код, который у меня получился, но сейчас я не понимаю как добавить информацию о докторах , которую я уже ранее создовала, откуда ее взять

скиньте полный код контроллера

вот такой код и вот что из этого получается

может я совсем что-то не то делаю??)) я совсем новичок, многих вещей не понимаю

Что-бы что-то выводилось на страницу Visualforce page вам нужно создать Apex контроллер и связать с этой страницей посмотрите там в статьи которую я скидывал все детально описано.

Вам в вашем коде в этом месте <apex:page > нужно добавить следующее:
<apex:page id=“TestId(Сами можете придумать)” controller=“Имя апекс контроллера допустим TestCont”>
Следующий шаг нужно создать Apex class который будет контроллером с этим именем TestCont, этот контроллер и будет отправлять инфу на страницу

Вот так, насколько я поняла? а Дальше в контроллере писать код, который достанет даные из объектов, которые я ранее создовала?


а откуда такие данные брать? “{!pcBrands}” - это что такое?

Это имя коллекции в которой вы храните ваши данные. Она естественно должна содержать данные иначе ничего не отобразится.

1 Like

Думаю вам стоит с начала четко разделить понятия страницы и контроллера. И кто за что отвечает, в вашем случае, вы забыли что без back-end части , никаких данных вы не получите.

  1. Создайте контроллер, в нём SOQL который вернёт коллекцию записей, и уже их вы сможете отобразить на VF странице с помощью {!моя коллекция из контроллера}

спасибо, а у вас может есть пример как создать SOQL, который возвращает коллекцию? я просто не очень понимаю о чем речь