2016-05-25 18 views
2

私はasp.netを初めて使用しています。ショッピングカートにitemstotal値を追加しようとしています。私が持っているコードは動作しませんが、正しい軌道に乗っているように感じます。誰か助けてくれますか?グリッドビューの列を合計してフッタに表示

ShoppingCart.aspx

<asp:TemplateField HeaderText="Item Total"> 
    <ItemTemplate> 
     <asp:Label ID="lblItemTotal" runat="server" DataFormatString="{0:c2}"></asp:Label> 
    </ItemTemplate> 
    <FooterTemplate> 
     <asp:Label ID="lblTotal" runat="server" Text="Order Total: "></asp:Label> 
    </FooterTemplate> 

ShoppingCart.aspx.cs

foreach (GridViewRow row in gvProductsList.Rows) 
{ 
    Label lblItemTotal = (Label)row.FindControl("lblItemTotal");//find itemTotal label 
    decimal decPrice = decimal.Parse(lblItemTotal.Text, NumberStyles.Currency);//convert to decimal 
    decimal newtotal =+ decPrice; 
    Label lblTotal = (row.FindControl("lblTotal")) as Label; 
    lblTotal.Text = "$" + Convert.ToString(newtotal); 
} 

私はライン lblTotal.Text = "$" + Convert.ToString(newtotal)についてnullexceptionを取得します。

+0

あなた 'foreach'ループがに何のイベントですか? – zgood

+0

カートを更新するのはbuttonclickイベントです。 – Jamie

答えて

2

私は初心者ですが、あなたのforeachループの中で、あなたが見ている行がフッタの内側のラベルを指す前に実際にフッタかどうかを確認するか、私は今の私とVSを持っていますが、これを試してみません :

var footerRow = gvProductsList.FooterRow; 

EDIT:であなたのフッター行を取得することができます

decimal newtotal; 
foreach (GridViewRow row in gvProductsList.Rows) 
{ 
    Label lblItemTotal = (Label)row.FindControl("lblItemTotal"); 
    decimal decPrice = decimal.Parse(lblItemTotal.Text, NumberStyles.Currency); 
    newtotal =+ decPrice; 
} 
var footerRow = gvProductsList.FooterRow; 
Label lblTotal = (footerRow.FindControl("lblTotal")) as Label; 
lblTotal.Text = "$" + Convert.ToString(newtotal); 
+0

ラベルを指す前にその行を追加するだけですか?私はsullがNullReferenceExceptionを取得しています。 – Jamie

+0

私はただレスポンスを編集しました。 @Jamie –

+0

私はそれを試して、合計で表示するいくつかの価値を持っていますが、表示された数は、合計された合計ではなく、リスト上の最後の製品の製品合計だけです。 – Jamie

関連する問題