是否可以在ASP.NET ListView控件中进行自定义分组?

时间:2009-06-01 19:55:01

标签: asp.net listview

您只能在ListView中定义GroupItemCount,但如果要根据数据源中项目的属性进行分组,该怎么办?按特定组排序。数据源在此属性上排序。

我看过一些例子,其中ItemTemplate中的某些标记是有条件显示的,但我想尽可能利用GroupTemplate。

这可能吗?

3 个答案:

答案 0 :(得分:4)

当我必须在转发器中添加基本组标题时,我使用ItemTemplate中的Literal控件:

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

代码中的“GetGroupHeading”方法跟踪前一个组标题并发回“&lt; h2&gt; Group Name&lt; / h2&gt;”,如果我们与前一个项目位于同一组,则返回一个空字符串。正如我所说,我在Repeater上做了这个,所以不确定它是否会涵盖ListView所需的内容。

答案 1 :(得分:2)

是的尼克带来了很大的领先优势。这是我的代码隐藏

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 

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

答案 2 :(得分:-2)