2012-03-16 4 views
3

.NET 4 ASP.NETasp.net 엔티티 워크 <% # 귀속 ("linkedTable.Field") %>

I는 연결된 조회를 갖는 테이블 엔티티 워크 기록을 표시하는은 DetailsView을 표. 나는 asp : BoundField "linkedTable.Field"로 설정된 데이터 필드와 값을 표시합니다.

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

가 나는 ASP에서 그 값을 사용하는 것을 시도하고있다 : TemplateField를하지만 사용하여 얻을하려고하면

<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 값이 다른 컨텍스트가 아닌 한 컨텍스트에 나타나는지 이해할 수 없다는 것입니다.

참고로, 내 데이터 연결

<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> 

당신이 다른 어떤 정보가 필요하면 알려하자 EntityDataSource에게 있습니다. 나는 갇혀있다

답변

1

좋아, 문제를 발견 :
EntityDataSource 태그에 Include="linkedTable"을 추가해야했습니다. 아직도 <asp:DataBound /> 태그에서 작동하는 이유가 확실하지 않습니다. 답에 대한

출처 : 텍스트의 forums.asp.net

복사 :

당신은 여기에서 시작해야합니다 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.entitydatasource.include.aspx

당신이 바인딩 할 수 없습니다 통보 것을 (나는 두 가지 의미 - 거리 데이터 바인딩) 관련 엔터티 (거기에 발언 참조).

및 이러한 속성에 대해 TemplateField를 사용해야합니다.

<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> 

당신이 업데이트를 다시 생각해야합니다, 당신을 삭제합니다

(나는 다른 두 EntitySetName에 대한 링크 테이블 'TableAB'를 사용 포함)이 예를 참조 수동으로 할 수 있습니다.