我使用协议版本2使用Entity Framework创建了OData WCF ADO.NET服务。实体模型如下所示:
我现在希望使用 Telerik RadGrid 来使用它。这是迄今为止的标记:
<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>
这显示了度量主题和用于扩展到度量定义的右箭头,但单击箭头不会执行任何操作。至少部分问题是ParentTableRelation
无法工作,因为实体上不存在“TopicID”。 (它并不存在,因为将“MeasureTopic”作为导航属性会阻止EF允许它作为标量存在于实体上。)
我想知道的是,关系通过OData Feed 作为链接...
<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>
...我如何配置RadGrid以理解它?
答案 0 :(得分:1)
您的标记大多是正确的,只有GroupLoadMode
应该是HierarchyLoadMode
。前者指定组的加载,后者 - 分层细节表。
您还需要一些javascript,更具体地说是两个RadGrid客户端事件 - OnHierarchyExpanding
和OnCommand
。该方法在this Telerik Blog post中得到了证明。