asp.net DetailsView - AutoGenerate列

时间:2012-03-29 20:25:52

标签: asp.net detailsview

我有一个asp DetailsView控件,我自动生成字段。

有一列具有映射到另一个表(外键)的ID。它显示在文本框中。我希望该列显示为下拉列表,如下面的代码示例所示。这样可以正常工作,但另一列仍然显示带有ID的文本框。

我的问题是: 是否可以使用自动生成并仍然隐藏您不需要或不想修改的列?

我不得不为每一列编写代码,因为一列需要使用TemplateField。

的DetailsView

<asp:DetailsView ID="DetailsView1" runat="server"
        DefaultMode="Edit" DataSourceID="EntityDataSource1"
        AutoGenerateEditButton="True" AutoGenerateInsertButton="True">
        <Fields>
            <asp:TemplateField HeaderText="Authorization">
                <EditItemTemplate>
                    <asp:DropDownList  ID="DropDownList2" Runat="server" DataSourceID="EntityDataSource2" CssClass="DropDown"
                        DataTextField="Name" DataValueField="AuthenticationId" SelectedValue='<%# bind("AuthenticationId") %>'>
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp
        </Fields>
</asp:DetailsView>

DetailsView DataSource:

<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
        ContextTypeName="EntityNamespace.MyEntity" EnableFlattening="False" 
        EntitySetName="Routes" Include="Authentication"  Where="it.RouteId = @RouteId">
        <WhereParameters>
            <asp:RouteParameter Type="Int32" RouteKey="RouteId" Name="RouteId" />
        </WhereParameters>
</asp:EntityDataSource>

Dropdownlist DataSource

<asp:EntityDataSource ID="EntityDataSource2" runat="server" 
        ContextTypeName="EntityNamespace.MyEntity" EnableFlattening="False" 
        EntitySetName="Authentications">
</asp:EntityDataSource>

1 个答案:

答案 0 :(得分:3)

我想你可以。看看AutoGenerateRows。它在msdn上这样说:

  

明确声明的行字段可以与。结合使用   自动生成的行字段。两者都明确使用时   声明的行字段首先呈现,然后自动呈现   生成的行字段。

但您还必须考虑行不在字段集合

  

自动生成的绑定行字段不会添加到字段中   集合。

参考here