2009-06-01 4 views
5

Вы можете определить только GroupItemCount в ListView, но что делать, если вы хотите группировать данные на основе свойств элементов в источнике данных? Вид группы ad-hoc. Источник данных сортируется по этому свойству.Возможно ли выполнить пользовательскую группировку в элементе управления ListView ASP.NET?

Я видел несколько примеров, когда некоторая разметка в ItemTemplate была условно отображена, но я хочу использовать PanelTemplate, если это возможно.

Возможно ли это?

+0

Кстати, я не ищу для кода, просто указатель в правильном направлении. –

ответ

3

Когда я должен был добавить основные заголовки групп в ретрансляторе я сделал это с буквальным контролем в ItemTemplate:

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

«GetGroupHeading» метод в коде отслеживал предыдущего заголовок группы и послал назад '<h2> Название группы </h2 >' или пустая строка, если мы были в той же группе, что и предыдущий элемент. Как я уже сказал, я сделал это на Repeater, поэтому не уверен, что он будет покрывать то, что вам нужно для ListView.

+0

Вы можете сделать это и в ListView, но добавление заголовка отличается от группировки с помощью GroupTemplate в элементе управления ListView. С помощью GroupTemplate вы можете окружать элементы разметкой в ​​шаблоне. За исключением всех, что вы можете группировать, считается, насколько я могу судить. –

-2

Попробуйте эту статью из 4 парней из Ролла: Using ASP.NET 3.5's ListView and DataPager Controls: Grouping Data with the ListView Control

+0

Эта статья посвящена регулярной группировке, все, что вы можете указать, - GroupCount. Я ищу способ использования 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> 
Смежные вопросы