2012-03-16 99 views
3

.NET 4 ASP.NETasp.net實體框架<%#綁定(「linkedTable.Field」)%>

我有一個顯示的實體框架記錄具有鏈接的查找表一個DetailsView表。我有一個asp:BoundField,其數據字段設置爲「linkedTable.Field」,並顯示一個值。

<asp:BoundField DataField="linkedTable.Field" HeaderText="linkedTable.Field" 
      SortExpression="linkedTable.Field" /> 

我試圖使用一個asp該值:模板列,但是當我嘗試用得到它:

<asp:TemplateField HeaderText="Field" SortExpression="linkedTable.Field" > 
    <EditItemTemplate> 
    <asp:Label runat="server" ID="lblField" Text='<%# Bind("linkedTable.Field") %>' /> 
    </EditItemTemplate> 
</asp:TemplateField> 

沒有在標籤中顯示出來。我可以將Bind()更改爲不是鏈接表的一部分的字段,它可以工作(即「ID」字段)。我的問題是我不明白爲什麼linkedtable.Field值顯示在一個上下文中,而不是在另一個上下文中。

僅供參考,我的數據連接是EntityDataSource

<asp:EntityDataSource ID="edsNYSEDaily" runat="server" 
    ConnectionString="name=ServerDBEntities" 
    DefaultContainerName="ServerDBEntities" EntitySetName="tblNYSE" 
    EntityTypeFilter="tblNYSE" EnableUpdate="True" EnableFlattening="true" 
    AutoGenerateWhereClause="True" Select="" Where=""> 
    <WhereParameters> 
     <asp:QueryStringParameter DefaultValue="0" Name="ID" 
      QueryStringField="ID" Type="Int32" /> 
    </WhereParameters> 

讓我知道如果你需要的任何其他信息。我被卡住了

回答

1

好的,發現問題:
需要將Include="linkedTable"添加到EntityDataSource標記。仍然不確定爲什麼它甚至可以在<asp:DataBound />標籤中工作。的回答

來源:forums.asp.net

複製的文字:

你應該從這裏開始:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.entitydatasource.include.aspx

通知,您將無法綁定(我是指兩種通過數據綁定)相關實體(請參閱其中的評論)。

而且,您必須爲這些屬性使用TemplateField。

看到這個例子(我使用的鏈接表「TableAB」的EntitySetName幷包含了其他兩種):

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" 
     AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="EntityDataSource1"> 
     <Columns> 
      <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> 
      <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" /> 
      <asp:BoundField DataField="IDA" HeaderText="IDA" SortExpression="IDA" /> 
      <asp:BoundField DataField="IDB" HeaderText="IDB" SortExpression="IDB" /> 
      <asp:TemplateField HeaderText="TableA Name"> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("TableA.NameA") %>' /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="TableB Name"> 
       <ItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<%# Eval("TableB.NameB") %>' /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
    <asp:EntityDataSource ID="EntityDataSource1" runat="server" ConnectionString="name=ABLinkEntities" 
     DefaultContainerName="ABLinkEntities" EnableDelete="True" EnableFlattening="False" 
     EnableInsert="True" EnableUpdate="True" EntitySetName="TableABs" Include="TableA,TableB"> 
    </asp:EntityDataSource> 

你就必須重新考慮更新和刪除,你可以手動完成。