I read that Hyperlink/TemplateColumn don´t support SortExpression as "[entity].[propertyNameOfRelatedEntity]". BoundColumn it`s ok.
I found a "temp solution" for sort by field of related entity in TemplateColumn. I use a very simple example scenario: Users and Profiles.
- Entity USER: ID_USER, NAME_USER; ID_PROFILE.
- Entity PROFILE: ID_PROFILE, NAME_PROFILE
- The Grid show: ID_USER, NAME_USER, PROFILE.NAME_PROFILE
- All grid columns enable sorting.
if grid column of NAME_PROFILE it's GridBoundColumn and the SortExpression is "PROFILE.NAME_PROFILE" sort it's OK, but this column is GridTemplateColumn throw an exception: "PROFILE.NAME_PROFILE" column not found. it's true, entity USER don`t contains "PROFILE.NAME_PROFILE" property.
A possible solution is flatting the results (use an anonymous type, view with join...)
Well, if you put:
- A GridBoundColumn with DataField and SortExpression "PROFILE.NAME_PROFILE" with Visible="false"
- A GridTemplate with DataField and SortExpression "PROFILE.NAME_PROFILE" (with Visible="true" :-P)
| <telerik:RadGrid ID="rgUsuarios" runat="server" |
| AutoGenerateColumns="false" AllowFilteringByColumn="true" AllowSorting="true" |
| <MasterTableView EditMode="InPlace" CommandItemDisplay="Top" DataKeyNames="ID_USUARIO"> |
| <Columns> |
| ... |
| ... |
| <telerik:GridBoundColumn DataField="PERFIL.DSC_PERFIL" HeaderText="Perfil" SortExpression="PERFIL.DSC_PERFIL" FilterControlWidth="130px" Visible="false"> |
| <HeaderStyle HorizontalAlign="Center" Width="150px" /> |
| <ItemStyle HorizontalAlign="Center" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridTemplateColumn DataField="PERFIL.DSC_PERFIL" HeaderText="Perfil" SortExpression="PERFIL.DSC_PERFIL" FilterControlWidth="130px"> |
| <HeaderStyle HorizontalAlign="Center" Width="150px" /> |
| <ItemStyle HorizontalAlign="Center" /> |
| <ItemTemplate> |
| <asp:Label ID="lblDscPerfil" runat="server" Text='<%# Eval("PERFIL.DSC_PERFIL") %>' /> |
| </ItemTemplate> |
| <EditItemTemplate> |
| <telerik:RadComboBox ID="rcbPerfil" runat="server" Width="95%" /> |
| </EditItemTemplate> |
| </telerik:GridTemplateColumn> |
| ... |
| ... |
| </Columns> |
| </MasterTableView> |
| </telerik:RadGrid> |
The click on TemplateColumn Header sort the grid OK. I don`t know the reason, but run OK.
Conclusion: Adding an invisible GridBoundColum with same Datafield and SortExpression "simulate" the sorting by related field entity it's ok.
I hope that this "patch" will be useful.