获取asp.net Gridview中未绑定数据列的总和

时间:2014-07-11 14:10:08

标签: sql where

我正在尝试获取未绑定数据列的总和。基本上我有一个带有下拉列表和Amount列的gridview。我从该列表中选择数量,价格乘以数量,金额显示在"金额"柱。价格也来自数据库和itemID。现在我想总结一下" Amount"中的所有值。柱。当我运行此代码时,每行都会使用数量和价格乘法成功更新,但总金额逻辑是添加item_price +" amount"中的任何值。柱。我只希望将数据添加到" Amount"柱。我在网格视图的底部有一个标签,我试图获得总结果值。救命!!

aspx文件是这样的:

<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" 
        OnRowDataBound="GridView1_RowDataBound" ShowFooter="true">
          <footerstyle backcolor="LightCyan"
      forecolor="MediumBlue"/>
<Columns>
    <asp:BoundField DataField="item_ID" HeaderText="ID" />
    <asp:TemplateField HeaderText="Quantity">
        <ItemTemplate>
      <asp:DropDownList ID="ddlQuantity" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlQuantity_SelectedIndexChanged">
         </asp:DropDownList>
        </ItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="purchase_price">
        <ItemTemplate>
            <asp:Label ID="lblPrice" Text='<%#Eval("purchase_price") %>' runat="server" ></asp:Label>
        </ItemTemplate>

    </asp:TemplateField>

    <asp:TemplateField HeaderText="Amount">
        <ItemTemplate>                        
            <asp:Label ID="lblAmount" Text="0.00" runat="server" ></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>

</Columns>

这是背后的代码:

protected void ddlQuantity_SelectedIndexChanged(object sender, EventArgs e)
{
    int quantity;
    GridViewRow gvr = ((DropDownList)sender).NamingContainer as GridViewRow;
    var ddlQuantity = gvr.FindControl("ddlQuantity") as DropDownList;
    var lblAmount = gvr.FindControl("lblAmount") as Label;
    var lblPrice = gvr.FindControl("lblPrice") as Label;
    int.TryParse(ddlQuantity.SelectedValue, out quantity);
    //Label1.Text = quantity.ToString();

    int pr = int.Parse(lblPrice.Text);
    int qt = int.Parse(ddlQuantity.SelectedValue);

    //Label2.Text += (pr*qt).ToString();


    lblAmount.Text = (pr * qt).ToString();

    int sum = 0;
    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        sum += int.Parse(lblAmount.Text);
    }
    Label2.Text = sum.ToString();
    }

1 个答案:

答案 0 :(得分:0)

你非常接近。在您的总和循环中,您每次只添加相同的金额。在该循环中,您需要查找每个lblAmount(对于该行)并对每个进行求和。

尝试使用此代码进行循环:

int sum = 0;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
    gvr = GridView1.Rows[i] as GridViewRow;
    var lblRowAmount = gvr.FindControl("lblAmount") as Label;

    sum += int.Parse(lblRowAmount.Text);
}
Label2.Text = sum.ToString();
相关问题