如何用CheckBox选中GridView中的多行,然后对所选行中的值进行计算?

假如学生的成绩表,选择多门课后,然后计算这些课相应成绩的总分数为什么我将CheckBox数据绑定之后,即使选中后,仍然无法计算,程序调试出的结果判断出CheckBox.C... 假如学生的成绩表,选择多门课后,然后计算这些课相应成绩的总分数
为什么我将CheckBox数据绑定之后,即使选中后,仍然无法计算,程序调试出的结果判断出CheckBox.Checked==false,不得知
展开
 我来答
匿名用户
2015-08-08
展开全部
参考如下:
根据CheckBox选中的行取值:
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
CheckBox ckb = (CheckBox)this.GridView1.Rows[i].Cells[0].FindControl("CheckBox1");
if (ckb.Checked)
{
huohao =Convert.ToInt32(this.GridView1.Rows[i].Cells[2].Text);
shuliang = Convert.ToInt32(this.GridView1.Rows[i].Cells[3].Text);
danjia =Convert.ToDecimal(this.GridView1.Rows[i].Cells[4].Text);
heJiJinE =Convert.ToDecimal(this.GridView1.Rows[i].Cells[5].Text);
jinhuoId =Convert.ToInt32(this.GridView1.Rows[i].Cells[7].Text);
}
}
计算数总数:
在Gridview的RowDataBound事件中:
string kucunNum = this.DropDownList1.SelectedItem.Text;
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView row = e.Row.DataItem as DataRowView;
if (!DBNull.Value.Equals(row["JinHuoShuliang"]))//注意DBNull
{
shopNumber += Convert.ToInt32(row["JinHuoShuliang"]);
}
}
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells.RemoveAt(3);
e.Row.Cells.RemoveAt(2);
e.Row.Cells[1].ColumnSpan = 3;
e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right;
e.Row.Cells[1].Text = kucunNum + "的库存量是:" + shopNumber.ToString();
}
漫漫追不腻
2011-07-27 · TA获得超过330个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:104万
展开全部
计算分数的时候 是点击按钮吧 那你看一下我的代码:
protected void btnCommit_Click(object sender, EventArgs e)
{
double numScore = 0;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
//如果某一行的CheckBox被选中,则执行统计操作
CheckBox chk = (CheckBox)(GridView1.Rows[i].Cells[0].FindControl("chkItem"));
if (chk.Checked == true)
{
Label lblScore = (Label) (GridView1.Rows[i].Cell[0].FindContorl("lblScore"));
numScore +=Convert.toDouble(lblScore.Text);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
handangaoyang
2011-07-26 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:896万
展开全部
你先看看你能不能得到你绑定的这个checkbox控件,我感觉你多数得不到这个控件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-27
展开全部
我想我解决你的问题了:
在你的事件里,
取((CheckBox)sender).Parent.Parent会取到你的控件所在的那一行。再转换一下
(GridViewRow)((CheckBox)sender).Parent.Parent)就得到了那个GridViewRow对象,之后取RowIndex什么的就随你意了。

——————————————————
你的e是普通的EventArg,当然不可能有e.RowIndex属性。
有两种方法。
一种是不用取当前行的索引值,直接用CheckBox2_CheckedChanged方法中的参数sender。
(CheckBox)sender就是将sender转化为一个CheckBox对象,你做相应判断就可以了。

另外一种要麻烦些。
你写一个循环,对GridView里面的每一行中的((CheckBox)GridView1.Rows[i].FindControl("checkbox1")).Checked进行判断。

但这两种方法你都仍然无法判断触发事件的是哪一行。
另外,虚机团上产品团购,超级便宜
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
moon7912
2011-07-26 · TA获得超过118个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:311万
展开全部
请帖代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式