开发者

Getting total for a column in ListView

I need to get a sum for all items in a column within a listview. I put in th开发者_StackOverflow中文版e following code in the itemdatabound event, but realized after testing it that it will only be getting what is bound, oops.

So I was looking for a little help converting this to show a total for my column from all items bound to the ListView.

Thanks.

 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);
           }
       }


The best method I have found to do this is to implement the OnDataBinding method for the control you are binding. For example:

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

First define a global counter in your .cs:

private int _quantityTotal = 0;

Then implement the OnDataBinding for the control:

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

Now you have the total stored in _quantityTotal which you can then add to a footer or something else after the databinding has occurred like the OnDataBound event.


Yes, you will have to query the DB to get this value, or depending on what you are binding, loop through the collection you are binding and sum the values from the classes or DataSet/DataTable you are binding to it.

HTH.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜