2009-10-28 33 views
6

Tengo problemas para crear un Gridview que puede abarcar 2 filas para cada registro.
He intentado usar un templateField con headerTemplate y itemTemplates como tablas separadas, pero no puedo conseguir que se formateen correctamente.asp.net Gridview, 1 registro abarca dos filas

¿Alguien sabe de una solución más fácil para este problema?

Respuesta

6

Sí, no utilice el GridView. Un GridView se usa para mostrar datos tabulares. Lo que quieres no se ajusta a ese criterio. Se puede usar un repetidor sin embargo, mi preferencia es el nuevo en 3,5 ListView

<asp:ListView ID="ListView1" runat="server" > 
    <ItemTemplate> 
    <tr> 
     <td> 
     <%# Eval("Something") %> 
     </td>   
    </tr> 
    <tr> 
     <td> 
     <%# Eval("SomethingElse") %> 
     </td> 
    </tr> 
    </ItemTemplate> 

    <EmptyDataTemplate> 
    <div> 
      No data was returned.</td> 
     </div>   
    </EmptyDataTemplate> 
    <LayoutTemplate>   
      <asp:PlaceHolder ID="itemPlaceholder" runat="server"> 
    </LayoutTemplate> 
</asp:ListView> 
+1

Además de esto, en asp.net 4.0 usted no necesita la parte para el ListView, por lo que es aún más sencillo. – DavidGouge

+0

La vista de lista funciona muy bien. Muchas gracias. Lo único que me queda por hacer es ordenar por los encabezados de las columnas. –

4

¿Ha considerado utilizar un Repeater en lugar de un GridView? El Repeater es probablemente la forma más fácil de tener 2 filas por registro, así que tienes más control sobre el marcado tabular que se genera, p.

<asp:Repeater runat="server" ID="Repeater1" > 
<HeaderTemplate> 
    <table> 
     <tr> 
      <th>Field 1</th> 
     </tr> 
     <tr> 
      <th>Field 2</th> 
     </tr> 
</HeaderTemplate> 
<ItemTemplate> 
    <tr> 
     <td><%# DataBinder.Eval(Container.DataItem, "field1") %></td> 
    </tr> 
    <tr> 
     <td><%# DataBinder.Eval(Container.DataItem, "field2") %></td> 
    </tr> 
</ItemTemplate> 
<FooterTemplate> 
    </table> 
</FooterTemplate> 
</asp:Repeater> 
Cuestiones relacionadas