2012-03-29 35 views
1

我有一个asp自动生成字段的DetailsView控件。asp.net DetailsView - AutoGenerate列

有一列有一个映射到另一个表(外键)的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数据源

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

回答

3

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

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

但是你也必须考虑到该行不是现场采集

自动生成绑定行字段不会添加到Fields 收藏。

参考here

+0

我读的文章,它并不表示我可以做我的愿望。因此,我只是假设它不能完成,而我必须自己绑定所有的领域。 +1努力 – PsychoDUCK 2012-03-30 13:38:19