我的复选框(在gridview内)有这个问题,我一直在网上搜索并破解我的大脑来解决这个问题..
我现在拥有的是,
(这是我的网格视图)
id amount($)
1 5 checkbox
2 13 checkbox
3 25 checkbox
我有一个初始值(例如 $1000)。每当我选中gridview中的复选框时,它都会从初始值中减去。如果我检查 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 循环中,这就是为什么每次选中第二个复选框时,它都会再次运行整个 for 循环,并且它将包括第一个复选框的数量。反正我能解决这个问题吗?(同样对于第三个复选框,它将在第一个和第二个复选框中包含 amt)
或者有什么方法可以让我在不使用for循环的情况下选中复选框来获取gridview的特定行?