2009-10-28 12 views
6

Ich habe Probleme beim Erstellen einer Gridview, die für jeden Datensatz 2 Zeilen umfassen kann.
Ich habe versucht, eine templateField mit headerTemplate und itemTemplates als separate Tabellen, aber ich kann sie nicht richtig formatieren.asp.net Gridview, 1 Datensatzspanne zwei Zeilen

Kennt jemand eine einfachere Lösung für dieses Problem?

Antwort

6

Ja, verwenden Sie nicht die GridView. Ein GridView wird verwendet, um tabellarische Daten anzuzeigen. Was Sie wollen, entspricht nicht diesen Kriterien. Sie könnten einen Repeater verwenden, aber meine Vorliebe die neu in 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

Zusätzlich dazu, in asp.net 4.0 Sie pflegen müssen den Teil für das Listview, so dass es noch einfacher. – DavidGouge

+0

Die Listenansicht funktioniert gut. Vielen Dank. Das einzige, was mir noch bleibt, ist nach den Spaltenüberschriften zu sortieren. –

4

Haben Sie in Betracht gezogen, eine Repeater anstelle einer GridView zu verwenden? Der Repeater ist wahrscheinlich der einfachste Weg, um zwei Zeilen pro Datensatz zu haben. Sie erhalten mehr Kontrolle über die Tabellenmarkierung, die z.

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