Группа повторителей ASP.NET по данным - PullRequest
0 голосов
/ 01 марта 2019

Я использую повторитель FormView для отображения моих данных в таблице.Однако я хочу сгруппировать одни и те же данные.У меня всего 4 категории.Форд, Ниссан, Тойота и Вольво.Строка данных для каждой марки автомобиля отличается.Как сгруппировать и сделать так, чтобы он отображался только один раз?

<asp:Repeater runat="server" DataSource='<%# Container.DataSource %>'>
        <ItemTemplate>
            <tr>
                <td align="right">Ford</td>
                <td align="left"><%# Eval("Carcode")%></td>
                <td align="left"><%# Eval("PlateNum")%></td>
                <td align="left"><%# Eval("StoreName")%></td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>

Мои результаты из таблицы данных:

Car_Name   Car_Code Plate_Number Store_Name
  Ford       1234      abc123     storeA
  Ford       1121      abc111     storeB
  Ford       2311      aaa111     storeC
  .....................................

Ожидаемые результаты:

Car_Name   Car_Code Plate_Number Store_Name
  Ford       1234      abc123     storeA
             1121      abc111     storeB
             2311      aaa111     storeC
  Nissan     1234      abc123     storeA
             1121      abc111     storeB
             2311      aaa111     storeC

1 Ответ

0 голосов
/ 05 марта 2019

Измените разметку вокруг названия компании следующим образом:

<td align="right">
  <asp:Label id="lblName" runat="server" Text='<%# Eval("CompanyName") %>' /> 
</td>

Создайте личную переменную

private _lastCompany As String = ""

В обработчике событий

Public Sub ItemDatabound(e As RepeaterItemEventArgs) ..
   Dim data As ClassType = CType(e.Item.DataItem, ClassType)
   If (data.CompanyName = _lastCompany) Then
      e.Item.FindControl("lblName").Visible = False
   End If

   _lastCompany = data.CompanyName
End Sub

Вы можете использоватьсобытие ItemDataBound для получения значения строки и сравнения с переменной, имеющей предыдущий элемент.Скрыть элемент управления каждый раз, когда предыдущая строка совпадает с текущей строкой.

...