2014-07-11 40 views
0

我正在嘗試獲取未綁定數據列的總和。基本上我有一個下拉列表和一個金額列的GridView。我從該清單中選擇數量,價格與數量相乘,金額顯示在「金額」列中。價格也是從數據庫和itemID中提取的。現在我想總結「金額」列中的所有值。在我運行這段代碼時,每一行都會成功更新數量和價格,但總金額邏輯會在「金額」列中添加item_price +任何值。我只希望將數據添加到「金額」列中。我在網格視圖底部有一個標籤,我試圖獲取總結果值。幫幫我!!在asp.net中獲取未綁定數據列的總和Gridview

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

回答

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(); 
+0

工作就像魅力!答對了!感謝名單! –

+0

好。請不要忘記標記這個答案。然後,我得到了一些觀點,其他人不花時間去想另一個答案。 – tgolisch

相關問題