チェックボックス(グリッドビュー内)にこの問題があり、ネットで検索して、この問題に対抗するために頭を割っていました..
私が今持っているのは、
(これは私のグリッドビューです)
id amount($)
1 5 checkbox
2 13 checkbox
3 25 checkbox
初期値があります (例: $1000)。グリッドビュー内のチェックボックスをオンにするたびに、初期値からマイナスになります。id=1 を確認すると、初期値が差し引かれ、$995 が表示されます。
別のチェックボックスを引き続きチェックすると、id=3 としましょう (つまり、2 つのチェックボックスがチェックされています)、金額は $970 と表示されます。
現在、チェックされた最初のチェックボックスでは問題なく機能しましたが、後続のチェックボックスで問題が発生しています..25ドルを差し引く代わりに、30ドル(25 + 5)を差し引きます
これが私のコードです:
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView2.Rows)
{
CheckBox selectChk = (CheckBox)row.FindControl("CheckBox1");
if (selectChk != null && selectChk.Checked)
{
String amount = ((Label)row.FindControl("amt")).Text;
double amtSpend = Convert.ToDouble(usedSpace);
double left = 100 - amtSpend;
totalLbl.Text = left.ToString();
}
forループ内にあったため、2番目のチェックボックスがチェックされるたびに、forループ全体が再度実行され、1番目のチェックボックスの量が含まれると考えていました。とにかく私はこれを解決できますか?(同様に、3 番目のチェックボックスの場合、1 番目と 2 番目のチェックボックスに amt が含まれます)
または、forループを使用せずにチェックボックスをオンにして、グリッドビューの特定の行を取得できる方法はありますか?