0

我正在使用 FormView Repeater 在表格中显示我的数据。但是,我想将相同的数据组合在一起。我总共有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
4

1 回答 1

0

更改公司名称周围的标记,例如:

<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 事件来获取行的值,并与具有前一项的变量进行比较。只要前一行与当前行匹配,就隐藏控件。

于 2019-03-05T12:27:44.017 回答