0

チェックされた行の合計価格を示す価格列があります。もともとは選択ボタンでこれをやろうとしましたが、うまくいかなかったので、グリッドビューにチェックボックスを追加しました。今、私はいくつかの行をチェックするときに、それらの行の合計がラベルに表示される必要があります。このコードは疲れましたが、エラーが発生しました:

    double sum = 0;

    foreach (GridViewRow gvr in GridView1.Rows)
    {  
        CheckBox cb = (CheckBox)gvr.FindControl("Checkbox1"); 
        if (cb.Checked)
        {
            double amount = Convert.ToDouble(gvr.Cells[2].Text);
            sum += amount;
        }


        Label1.Text = sum.ToString();

    }
4

2 に答える 2

0

二重合計 = 0;

foreach (GridViewRow gvr in GridView1.Rows)
{  
    CheckBox cb = (CheckBox)gvr.FindControl("Checkbox1"); 
    if (cb.Checked)
    {
        double amount = Convert.ToDouble(gvr.Cells[2].Text.replace("&nbsp",""));
        sum += amount;
    }


    Label1.Text = sum.ToString();

}
于 2012-10-22T05:37:24.520 に答える
0

グリッドの外でこのすべての作業を行っていると仮定したのは、このコードを実行するボタンをクリックして、ページのどこかにボタンがあることを意味します。右???はいの場合、コードにもう1つ含める必要があります。それはデータ行のチェックです...

二重合計 = 0;

foreach (GridViewRow gvr in GridView1.Rows)
{  
 if(gvr.RowType == DataControlRowType.DataRow)
 {
    CheckBox cb = (CheckBox)gvr.FindControl("Checkbox1"); 
    if (cb.Checked)
    {
        //check wether the cell value is empty or not, if empty take a 0 instead...
        double amount = gvr.Cells[2].Text.Trim() != null && gvr.Cells[2].Text.Length>0 ? Convert.ToDouble(gvr.Cells[2].Text.Trim()) : 0;
        sum += amount;
    }


    Label1.Text = sum.ToString();
  }

}

そうでない場合は、各チェックボックスの Change イベントでそれを行う必要があります。解決した場合は、問題についてお知らせください。喜んでお手伝いさせていただきます...

于 2012-10-22T05:13:13.297 に答える