获取ListView中列的总计

时间:2011-02-23 20:40:50

标签: c# asp.net

我需要获得列表视图中列中所有项目的总和。我在itemdatabound事件中输入了以下代码,但在测试之后意识到它只会获得绑定的内容,oops。

所以我正在寻找一些帮助来转换它,以便从绑定到ListView的所有项目中显示我的列的总数。

感谢。

 if (e.Item.ItemType == ListViewItemType.DataItem)     
       {
           ListViewDataItem item = (ListViewDataItem)e.Item;         

           Label lblQty = (Label)e.Item.FindControl("lblQuantity");
           if (lblQty == null)
           {
               return;
           }

           if (lblQty.Text.Length == 0 || lblQty.Text == "")
           {
               return;
           }
           else
           {
               ListViewTotal += int.Parse(lblQty.Text);
           }
       }

2 个答案:

答案 0 :(得分:1)

我发现这样做的最好方法是为你绑定的控件实现OnDataBinding方法。例如:

<asp:ListView ID="ListView1" runat="server">
    <ItemTemplate>
        <asp:Literal ID="yourLiteral" runat="server"
            OnDataBinding="yourLiteral_DataBinding"></asp:Literal>
    </ItemTemplate>
</asp:ListView>

首先在.cs中定义一个全局计数器:

private int _quantityTotal = 0;

然后为控件实现OnDataBinding

 protected void yourLiteral_DataBinding(object sender, System.EventArgs e)
 {
     // You could get anything here to get a value including calling a DB
     // call if you want for each item that is being bound.
     Literal lt = (Literal)(sender);
     int quantity = (int)(Eval("yourQuantityField"));
     _quantityTotal += quantity;
     lt.Text = quantity.ToString();
 }

现在您已将总数存储在_quantityTotal中,然后您可以在数据绑定发生后添加到页脚或其他内容,如OnDataBound事件。

答案 1 :(得分:0)

是的,您必须查询数据库以获取此值,或者根据您绑定的内容,循环您绑定的集合,并对您绑定的类或DataSet / DataTable中的值求和。 / p>

HTH。