2010-03-09 4 views
17

Ich habe eine asp: FormView mit einem ItemTemplate. Ich möchte den Inhalt innerhalb des Formview mit einigen div Elemente entwerfen:Wie verhindert man asp: FormView vom Rendern als Tabelle?

<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> 

Wenn ich die Anwendung der folgenden HTML laufen erstellt:

<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> 

Eigentlich ist der Tisch etwas störend. Ich weiß nicht, was der Zweck ist, ein ItemTemplate zu haben, um den Inhalt frei zu stylen, aber dann in eine Tabelle zu verpacken.

Kann dieses Verhalten deaktiviert oder umgangen werden? (Ich konnte nicht eine Flagge in den Formview-Eigenschaften finden.)

+0

Wäre ein ListView hier nützlich? Sie haben mehr Kontrolle über das LayoutTemplate. –

+0

Wenn es nicht anders geht könnte ich dies berücksichtigen. Ich habe nur ein Objekt in einem Formular anzuzeigen, nicht eine Liste. Die "natürlichste" Kontrolle schien also auf den ersten Blick ein FormView zu sein. Wie auch immer, danke für den Tipp! – Slauma

Antwort

3

Verwendung Repeater (es Light-Version ist und vollständig anpassbar)

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

oder

bessere Nutzung Kontrolle adapters:

+0

Hm, was meinst du mit der ersten Option ("verwende deine (div) Templates")? Ihr Markup-Beispiel ist genau das, was ich tue, nicht wahr? – Slauma

+0

Es tut mir leid. Ich empfehle Ihnen die Verwendung von Repeater – garik

+2

Dies beantwortet die Frage nicht. Es ist möglich, das FormView anzuweisen, das Rendern als eine 'Tabelle' (in ASP.NET 4.0) zu beenden –

55

Sie können RenderOuterTable="false" auf dem FormView

+4

fyi, das ist neu in ASP.NET 4.0 http : //www.4guysfromrolla.com/articles/032410-1.aspx –

+2

Die Style-Eigenschaft 'Width' kann nicht verwendet werden, während RenderOuterTable auf dem FormView-Steuerelement deaktiviert ist –

+0

Sie sind der beste Mann! –

10

verwenden Verwenden Sie den folgenden Code.

RenderOuterTable="false" 

Legen Sie es auf dem Formview. Es funktioniert in .NET 4.0.