3

.NET 4 ASP.NET

リンクされたルックアップ テーブルを持つテーブルのエンティティ フレームワーク レコードを表示している DetailsView があります。データフィールドが「linkedTable.Field」として設定されたasp:BoundFieldがあり、値が表示されます。

<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 の値が一方のコンテキストに表示され、もう一方のコンテキストには表示されない理由がわかりません。

参考までに、私のデータ接続は 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>

他に情報が必要な場合はお知らせください。ハマった

4

1 に答える 1

1

OK、問題を発見しました:タグ
に追加Include="linkedTable"する必要がありました。EntityDataSourceなぜそれが<asp:DataBound />タグで機能していたのかはまだわかりません。

回答のソース: forums.asp.net

テキストのコピー:

ここから開始する必要があります: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.entitydatasource.include.aspx

関連するエンティティをバインド (つまり、双方向のデータ バインディング) できないことに注意してください (そこの説明を参照してください)。

また、これらのプロパティには TemplateField を使用する必要があります。

この例を参照してください (EntitySetName にリンク テーブル 'TableAB' を使用し、他の 2 つを含めました)。

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

更新と削除を再検討する必要があります。手動で行うことができます。

于 2012-03-16T16:17:11.877 に答える