2010-03-09 6 views
17

J'ai un asp: FormView avec un ItemTemplate. Je voudrais concevoir le contenu dans le FormView avec quelques éléments div:Comment empêcher asp: FormView de rendre en tant que table?

<asp:FormView ID="MyFormView" runat="server" > 
    <ItemTemplate> 
     <div class="block1"> 
      Stuff... 
     </div> 
     <div class="block2"> 
      Stuff... 
     </div> 

     ... 

     <div class="blockN"> 
      Stuff... 
     </div> 
    </ItemTemplate> 
</asp:FormView> 

Quand je lance l'application le code HTML suivant est créé:

<table id="MyFormView" style="border-collapse: collapse;" border="0" cellspacing="0"> 
    <tbody> 
     <tr> 
      <td colspan="2"> 
       <div class="block1"> 
        Stuff... 
       </div> 
       <div class="block2"> 
        Stuff... 
       </div> 

       ... 

       <div class="blockN"> 
        Stuff... 
       </div> 
      </td> 
     </tr> 
    </tbody> 
</table> 

En fait, le tableau est un peu inquiétant. Je ne sais pas quel est le but d'avoir un ItemTemplate pour freestyle le contenu, mais ensuite l'envelopper dans une table.

Est-il possible de désactiver ou de contourner ce problème? (Je ne pouvais pas trouver un drapeau dans les propriétés du FormView.)

+0

Un ListView serait-il utile ici? Vous avez plus de contrôle sur le LayoutTemplate. –

+0

S'il n'y a pas d'autre moyen, je pourrais considérer cela. Je n'ai qu'un seul objet à afficher dans un formulaire, pas une liste. Donc, le contrôle le plus "naturel" semblait être un FormView à première vue. Quoi qu'il en soit, merci pour le conseil! – Slauma

Répondre

3

répéteur utilisation (il est une version légère et entièrement personnalisable)

<asp:Repeater runat=server ID="r1"> 
<HeaderTemplate><div></HeaderTemplate> 
<ItemTemplate>Zzz</ItemTemplate> 
<FooterTemplate></div></FooterTemplate> 
</asp:Repeater> 

ou

un meilleur contrôle de l'utilisation adapters:

+0

Hm, qu'est-ce que tu veux dire par la première option ("utilise ton (div) template")? Votre exemple de balisage est exactement ce que je fais, n'est-ce pas? – Slauma

+0

Je suis désolé. Je vous recommande d'utiliser Répéteur – garik

+2

Cela ne répond pas à la question. Il est possible de dire à FormView d'arrêter le rendu en tant que 'table' (en ASP.NET 4.0) –

55

Vous pouvez définir RenderOuterTable="false" sur le FormView

+4

fyi, ceci est nouveau dans ASP.NET 4.0 http : //www.4guysfromrolla.com/articles/032410-1.aspx –

+2

La propriété de style 'Largeur' ne peut pas être utilisée lorsque RenderOuterTable est désactivé sur le contrôle FormView –

+0

vous êtes le meilleur homme! –

10

Utilisez le code suivant.

RenderOuterTable="false" 

Mettez-le sur le FormView. Cela fonctionne dans .NET 4.0.

Questions connexes