我正在使用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
更改公司名称周围的标记,如:
<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事件获取行的值,并与具有前一项的变量进行比较。在前一行与当前行匹配的任何时候隐藏控件。