我正在使用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
答案 0 :(得分: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事件获取行的值,并将其与具有前一项的变量进行比较。只要上一行与当前行匹配,就隐藏控件。