2012-03-29 3 views
1

J'ai un contrôle DetailsView asp que je génère automatiquement les champs.asp.net DetailsView - AutoGenerate Columns

Une colonne possède un ID mappé à une autre table (clé étrangère). Il apparaît dans une zone de texte. Je veux que cette colonne soit affichée comme une liste déroulante comme indiqué dans mon exemple de code ci-dessous. Cela fonctionne très bien, mais l'autre colonne affiche toujours la zone de texte avec l'ID dedans.

Ma question est: est-il possible d'utiliser les colonnes auto générer et masquer encore que vous n'avez pas besoin ou que vous voulez modifier?

Je déteste avoir à écrire du code pour chaque colonne juste parce qu'une colonne doit utiliser un 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> 

Répondre

3

Je pense que vous pouvez. Jetez un oeil à AutoGenerateRows. Il indique comme ceci sur msdn:

Les champs de ligne explicitement déclarés peuvent être utilisés en combinaison avec champs de lignes générés automatiquement. Lorsque les deux sont utilisés, les champs de ligne déclarés explicitement sont affichés en premier, suivis des champs de ligne générés automatiquement .

Mais il faut aussi considérer que les lignes ne sont pas dans la collection de champs

champs de ligne automatiquement liés générés ne sont pas ajoutées à la collection Fields .

Référence here

+0

Je lis l'article, et il n'indique pas que je peux faire ce que je veux. Par conséquent, je vais juste supposer que cela ne peut pas être fait, et que je dois lier tous les champs moi-même. + 1 pour l'effort – PsychoDUCK