【问题标题】:Is it possible to do custom grouping in the ASP.NET ListView control?是否可以在 ASP.NET ListView 控件中进行自定义分组?
【发布时间】:2011-09-12 23:12:31
【问题描述】:

你只能在ListView中定义一个GroupItemCount,但是如果你想根据数据源中item的一个属性进行分组呢?有点像临时组。数据源按此属性排序。

我看到了一些示例,其中有条件地显示 ItemTemplate 中的某些标记,但如果可能,我想利用 GroupTemplate。

这可能吗?

【问题讨论】:

  • 顺便说一句,我不是在找代码,只是一个指向正确方向的指针。

标签: asp.net listview


【解决方案1】:

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

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

代码中的“GetGroupHeading”方法跟踪前一个组标题并返回“

Group Name

”,如果我们与前一个项目在同一组中,则返回一个空字符串。不过,正如我所说,我是在 Repeater 上执行此操作的,因此不确定它是否能满足您对 ListView 的需求。

【讨论】:

  • 您也可以在 ListView 中执行此操作,但添加标题与在 ListView 控件中使用 GroupTemplate 进行分组不同。使用 GroupTemplate,您可以使用模板中的标记围绕项目。据我所知,除了你可以分组的所有内容。
【解决方案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>

【讨论】:

    【解决方案3】:

    【讨论】:

    • 那篇文章是关于常规分组的,你可以指定GroupCount。我正在寻找一种使用 GroupTemplate 按公共属性对数据进行分组的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多