2009-06-01 2 views
5

Sie können in der ListView nur einen GroupItemCount definieren. Was aber, wenn Sie eine Gruppierung basierend auf einer Eigenschaft der Elemente in der Datenquelle durchführen möchten? Art einer Ad-hoc-Gruppe von. Die Datenquelle wird für diese Eigenschaft sortiert.Ist es möglich, eine benutzerdefinierte Gruppierung im ASP.NET ListView-Steuerelement vorzunehmen?

Ich habe einige Beispiele gesehen, wo einige Markup in der ItemTemplate bedingt angezeigt wurde, aber ich möchte die GroupTemplate, wenn möglich, nutzen.

Ist das möglich?

+0

By the way, ich bin nicht auf der Suche nach Code, nur ein Zeiger in der richtigen Richtung. –

Antwort

3

Als ich hatte Grundgruppenüberschriften in einem Repeater hinzuzufügen ich habe so mit einem Literal Steuerung im ItemTemplate:

<asp:Literal runat="server" Text='<%# GetGroupHeading(Eval("Group")) %>' /> 

Die ‚GetGroupHeading‘ Methode in der Codespur von der vorherigen Gruppe Überschrift gehalten und geschickt zurück '<h2> Gruppenname </h2 >' oder eine leere Zeichenfolge, wenn wir in derselben Gruppe wie das vorherige Element waren. Wie ich bereits sagte, habe ich dies auf einem Repeater getan, also nicht sicher, ob es deckt, was Sie für einen ListView benötigen.

+0

Sie können dies auch in einer ListView tun, aber das Hinzufügen einer Kopfzeile unterscheidet sich von der Gruppierung mit der GroupTemplate im ListView-Steuerelement. Mit der GroupTemplate können Sie die Elemente mit dem Markup in der Vorlage umgeben. Außer allem, was du gruppieren kannst, zählt, soweit ich es beurteilen kann. –

2

Ja Nick einen großen Vorsprung hat. Hier ist meine Code-hinter

Dim sCategory_Descr As String 
Function GetGroupHeading(ByVal sGroupName As String) As String 
    Dim sReturn As String 
    If sCategory_Descr <> sGroupName Then 
     sCategory_Descr = sGroupName 
     sReturn = "<H5>Category: " & UCase(sGroupName) & "</H5>" 
    Else 
     sReturn = "" 
    End If 
     Return sReturn 
End Function 

Und meine item_template

<ItemTemplate>      
    <tr> 
     <td style="background-color:#ccc;" colspan="2" id="tdCategory_Placeholder" runat="server" > 
      <asp:Label Font-Bold="true" ID="Literal1" runat="server" Text='<%# GetGroupHeading(Eval("Category_Descr")) %>' /> 
     </td> 
    </tr>          
    <tr> 
     <td > 
      <asp:DynamicControl1 />      
     </td>            
     <td > 
      <asp:DynamicControl2 /> 
     </td>      
    </tr> 
</ItemTemplate> 
Verwandte Themen