Search code examples
kentico

UI to manage one to many relationship between classes in custom module in Kentico


I have created a Clinic module within Kentico V12 with two classes: Doctor and Appointment. There is a 1 to many relationship between Doctor and Appointment. How could I display the name and surname of the doctors in the Appointment grid?

<?xml version="1.0" encoding="utf-8" ?>
<grid>
    <actions>
        <action name="edit" caption="$General.Edit$" fonticonclass="icon-edit" fonticonstyle="allow" />
        <action name="#delete" caption="$General.Delete$" fonticonclass="icon-bin" fonticonstyle="critical" confirmation="$General.ConfirmDelete$" />
    </actions>
    <columns>
        <column source="AppointmentPatientFirstName" caption="First name" wrap="false" localize="true">
            <filter type="text" size="200" />
        </column>
        <column source="AppointmentPatientLastName" caption="Last name" wrap="false" localize="true">
            <filter type="text" size="200" />
        </column>
        <column source="AppointmentPatientEmail" caption="Email" wrap="false" localize="true">
            <filter type="text" size="200" />
        </column>
        <column source="AppointmentPatientPhoneNumber" caption="Phone Number" wrap="false" localize="true">
            <filter type="text" size="15" />
        </column>
        <column source="Date" caption="Date" wrap="false" localize="true">
            <filter type="text" size="200" />
        </column>
        <column source="AppointmentPatientBirthDate" caption="BirthDate" wrap="false" localize="true">
            <filter type="text" size="200" />
        </column>
        <column source="AppointmentDoctorID" caption="Doctor ID" wrap="false" localize="true">
            <filter type="text" size="200" />
        </column>
    </columns>
    <options>
        <key name="DisplayFilter" value="true" />
    </options>
</grid>

Kind regards.

Appointment List: https://i.sstatic.net/Ft1pE.png


Solution

  • Using this column AppointmentDoctorID modify the XML to use a transformation like so:

    <column source="AppointmentDoctorID" caption="Doctor" externalsourcename="#transform: yournamespace.doctor: {%FirstName%} {%LastName%}" wrap="false" localize="true"></column>
    

    Check out more documentation on unigrids in the Kentico Documentation.