我有一个转发器控件,我在其中显示如下记录。
Name Type noOfItems Amount
Abc A 2 100
cbc B 1 200
xyz A 1 100
ret c 3 50
wes B 1 200
在此我显示3行..我想要的是计算类型的数量及其总数noofItems
像...一样的东西。
Total no of items: (3) A, (2) B, (1) C
Total Amount: (2) 100, (2) 200, (1) 50
请尽量帮助我..请...
谢谢你,..
答案 0 :(得分:0)
绑定转发器的ItemDataBound事件,并在其中保留带有值的字典。在连接页脚时,将值设置在您需要的任何位置。
在页面中:
<asp:Repeater ... OnItemDataBound="rptRepeaterName_ItemDataBound" ...>
在背后的代码中:
protected void rptRepeaterName_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ItemType.Item || e.Item.ItemType == ItemType.AlternatingItem)
{
// logic to count occurences of A, B, C and amounts in each their own dictionary ex: typeDictionary[type] += 1; amountDictionary[amount] += 1;
}
else if (e.Item.ItemType = ItemType.Footer)
{
// display values stored in both dictionaries
}
}
答案 1 :(得分:0)
这是另一个想法,你使用一个保持总数的函数来调用金额,并在转发器的末尾使用它们。
<asp:Repeater ID="myId" runat="server">
<ItemTemplate>
<%#GetTheAmount(Container.DataItem)%>
</ItemTemplate>
</asp:Repeater>
Total Amount: <%=cTotalAmount%>
Total Lines: <%=cTotalLines%>
以及
背后的代码public int cTotalAmount = 0;
public int cTotalLines = 0;
public string GetTheAmount(object oItem)
{
int cCurrentAmount = (int)DataBinder.Eval(oItem, "Amount");
cTotalLines++;
cTotalAmount += cCurrentAmount;
return cCurrentAmount.ToString();
}