2010-03-09 10 views
17

Tengo un asp: FormView con un ItemTemplate. Me gustaría diseñar el contenido dentro de la FormView con algunos elementos div:Cómo prevenir que asp: FormView se muestre como una tabla?

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

Cuando ejecuto la aplicación se crea el código HTML siguiente:

<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 realidad la mesa es algo preocupante. No sé cuál es el propósito de tener un ItemTemplate para freestyle el contenido pero luego envolverlo en una tabla.

¿Es posible deshabilitar o evitar este comportamiento? (No pude encontrar una bandera en las propiedades FormView.)

+0

¿Sería útil una vista de lista aquí? Usted tiene más control sobre LayoutTemplate. –

+0

Si no hay otra manera, podría considerar esto. Solo tengo un objeto para mostrar en un formulario, no en una lista. Así que el control más "natural" parecía ser un FormView a primera vista. De todos modos, ¡gracias por el consejo! – Slauma

Respuesta

3

uso repetidor (que es la versión ligera y totalmente personalizable)

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

o

un mejor control de su uso adapters:

+0

Hm, ¿qué quiere decir con la primera opción ("use sus plantillas (div)")? Su ejemplo de marcado es exactamente lo que estoy haciendo, ¿verdad? – Slauma

+0

Lo siento. Te recomiendo que uses Repeater – garik

+2

Esto no responde la pregunta. Es posible decirle al FormView que pare el renderizado como 'tabla' (en ASP.NET 4.0) –

55

Puede configurar RenderOuterTable="false" en el FormView

+4

FYI, esto es nuevo en ASP.NET 4.0 http : //www.4guysfromrolla.com/articles/032410-1.aspx –

+2

La propiedad de estilo 'Ancho' no se puede usar mientras RenderOuterTable está deshabilitada en el control FormView –

+0

¡usted es el mejor hombre! –

10

Use el siguiente código.

RenderOuterTable="false" 

pondrán en los FormView. Funciona en .NET 4.0.

Cuestiones relacionadas