需要计算具有相同类型的列单元格值

时间:2011-07-16 06:27:51

标签: asp.net

我有一个转发器控件,我在其中显示如下记录。

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

请尽量帮助我..请...

谢谢你,..

2 个答案:

答案 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();
}