2010-09-06 57 views
0

我有一個GridView DataBind的實體ClassA的屬性,工作正常。 我可以直接綁定ASPX文件中的屬性。 ClassA.Id ClassA.Name 等ASP GridView的數據綁定與實體導航屬性

但是,ClassA也有一個導航屬性,以相關的ClassB。我想在同一個GridView中顯示相關的classB屬性。

我嘗試在GridView中綁定以下內容,但即使我能夠在調試模式下正確評估以下值(實體在需要時執行延遲加載),它也不起作用。 ClassA.classB.Name

我該如何繼續?

回答

1

您可以通過具有如下eval函數的模板列實現您的目標;

<asp:TemplateField HeaderText="Name" SortExpression="Name"> 
    <ItemTemplate> 
     <EditItemTemplate> 
      <asp:TextBox ID="TextBox1" runat="server" 
       Text='<%# Eval("ClassA.ClassB.Name") %>'></asp:TextBox> 
     </EditItemTemplate> 
     <asp:Label ID="Label1" runat="server" 
      Text='<%# Eval("ClassA.ClassB.Name") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

該方法的缺點是使用遲後綁定的eval方法禁用雙向數據綁定功能。

+0

感謝您的建議。它工作的很好,但正如你所說的,它不支持雙向數據綁定。你有沒有看到其他的選擇? – Sylvain 2010-09-09 09:15:36

+0

還有一些替代方法,比如爲您的數據源實現ITypedlist或IBindingList接口。但這不是一項微不足道的任務。所以你應該決定是否值得創建一個自定義綁定提供程序。 – orka 2010-09-09 15:58:34