2011-09-29 2 views
1

J'ai un service ADO.NET OData WCF créé avec Entity Framework en utilisant la version du protocole 2. Le modèle d'entité ressemble à ceci:Comment créer une relation maître/détail avec Telerik et OData?

Entity model

Je voudrais maintenant consommer ce à l'aide d'un Telerik RadGrid. Voici le balisage jusqu'à présent:

<telerik:RadGrid ID="radGrid" runat="server" AutoGenerateColumns="false" Width="100%" Skin="Sitefinity"> 
    <ClientSettings> 
     <DataBinding Location="http://aadev:8081/measuredata.svc"> 
      <DataService TableName="MeasureTopics"></DataService> 
     </DataBinding> 
    </ClientSettings> 
    <MasterTableView DataKeyNames="MeasureTopicGuid" GroupLoadMode="Client" Name="MeasureTopics"> 
     <Columns> 
      <telerik:GridBoundColumn DataField="TopicName" /> 
     </Columns> 
     <DetailTables> 
      <telerik:GridTableView DataKeyNames="MeasureGuid" runat="server"> 
       <ParentTableRelation> 
        <telerik:GridRelationFields DetailKeyField="TopicID" MasterKeyField="MeasureTopicGuid" /> 
       </ParentTableRelation> 
       <Columns> 
        <telerik:GridBoundColumn DataField="MeasureKeyCode" /> 
        <telerik:GridBoundColumn DataField="MeasureName" /> 
       </Columns> 
      </telerik:GridTableView> 
     </DetailTables> 
    </MasterTableView> 
</telerik:RadGrid> 

Cela montre les sujets de mesure et une flèche vers la droite de se développer dans les définitions de mesure, mais en cliquant sur la flèche ne fait rien. Au moins une partie du problème est que ParentTableRelation ne peut pas fonctionner car "TopicID" n'existe pas sur l'entité. (Il n'est pas là car avoir "MeasureTopic" comme propriété de navigation empêche EF de lui permettre d'exister aussi sur l'entité en tant que scalaire.)

Ce que je voudrais savoir, c'est que la relation est en train d'apparaître. OData nourrir comme un lien ...

<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/MeasureTopic" type="application/atom+xml;type=entry" title="MeasureTopic" href="MeasureDefinitions(guid'96df6072-a8e4-e011-890d-000c29ba97e5')/MeasureTopic" /> 
<category term="HealthMeasuresModel.MeasureDefinition" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
<content type="application/xml"> 
    <m:properties> 
     <d:MeasureGuid m:type="Edm.Guid">96df6072-a8e4-e011-890d-000c29ba97e5</d:MeasureGuid> 
     <d:MeasureKeyCode>ABC-001</d:MeasureKeyCode> 
     <d:MeasureName>ABC Register</d:MeasureName> 
     <d:MeasureDescription>Test</d:MeasureDescription> 
    </m:properties> 
</content> 

... comment puis-je configurer RadGrid pour le comprendre?

Répondre

1

Votre balisage est généralement correct, seul GroupLoadMode devrait être HierarchyLoadMode à la place. Le premier spécifie le chargement des groupes, le second - des tableaux de détails hiérarchiques.

Vous avez également besoin de javascript, plus précisément deux événements clients RadGrid - OnHierarchyExpanding et OnCommand. L'approche est démontrée dans this Telerik Blog post.

Questions connexes