我需要获得列表视图中列中所有项目的总和。我在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);
}
}
答案 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。