2009-06-01 5 views
5

Vous pouvez uniquement définir un GroupItemCount dans ListView, mais que se passe-t-il si vous souhaitez effectuer un regroupement en fonction d'une propriété des éléments de la source de données? Tri d'un groupe ad-hoc par. La source de données est triée sur cette propriété.Est-il possible d'effectuer un regroupement personnalisé dans le contrôle ASP.NET ListView?

J'ai vu quelques exemples où un balisage dans le ItemTemplate était conditionnellement montrer, mais je veux tirer parti du GroupTemplate si possible.

Est-ce possible?

+0

Soit dit en passant, je ne suis pas à la recherche de code, juste un pointeur dans la bonne direction. –

Répondre

3

Quand je devais ajouter des titres de groupes de base dans un répéteur je l'ai fait avec un contrôle Literal dans le ItemTemplate:

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

La méthode « GetGroupHeading » dans le code gardé la trace de la position du groupe précédent et envoyé retour '<h2> Nom du groupe </h2 >', ou une chaîne vide si nous étions sur le même groupe que l'élément précédent. Comme je l'ai dit cependant, je l'ai fait sur un répéteur, donc je ne sais pas si cela couvrira ce dont vous avez besoin pour un ListView.

+0

Vous pouvez également le faire dans ListView, mais l'ajout d'un en-tête diffère du regroupement avec GroupTemplate dans le contrôle ListView. Avec GroupTemplate, vous pouvez entourer les éléments avec le marquage dans le modèle. Sauf que tout ce que vous pouvez grouper, c'est compter autant que je peux dire. –

2

Oui Nick a donné une grande avance. Voici mon code-behind

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 

Et mon 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> 
Questions connexes