2009-10-28 15 views
6

Mam problemy z tworzeniem Gridview, które mogą obejmować 2 wiersze dla każdego rekordu.
Próbowałem użyć templateField z headerTemplate i itemTemplates jako oddzielnych tabel, ale nie mogę ich poprawnie sformatować.asp.net Gridview, 1 rekord dwóch rzędów

Czy ktoś wie o łatwiejszym rozwiązaniu tego problemu?

Odpowiedz

6

Tak, nie używaj GridView. GridView służy do wyświetlania danych tabelarycznych. To, czego chcesz, nie pasuje do tych kryteriów. Można użyć repeater jednak moja preferencja jest nowy w 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

Poza tym, w ASP.NET 4.0 wont potrzebujemy Części do ListView, co czyni go jeszcze bardziej proste. – DavidGouge

+0

Widok listy działa świetnie. Dziękuję Ci bardzo. Pozostało mi tylko posortować według nagłówków kolumn. –

4

Czy rozważałeś użycie Repeater zamiast GridView? Repeater jest prawdopodobnie najłatwiejszym sposobem na 2 wiersze na rekord, masz większą kontrolę nad znacznikami tabelarycznymi, które są generowane, np.

<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> 
Powiązane problemy