簡體   English   中英

asp.net實體框架<%#Bind(“linkedTable.Field”)%>

[英]asp.net entity framework <%# Bind(“linkedTable.Field”) %>

.NET 4 ASP.NET

我有一個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值顯示在一個上下文中而不顯示在另一個上下文中。

僅供參考,我的數據連接是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>

如果您需要任何其他信息,請與我們聯系。 我被卡住了

好的,發現了問題:
需要將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>

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM