2010-09-06 64 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