标题:Gridview和CheckBox的问题!
取消只看楼主
lbhnrg2021
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-8-6
 问题点数:0 回复次数:5 
Gridview和CheckBox的问题!

我用FOR循环遍历检索Girdview中CheckBox是否被选中,但是无法实现!开始我以为是语句错误,然后我用response.write()返回搜索结果,但是我选中的CheckBox的Checked状态都为False这是怎么回事,但是我想了好久,逻辑方面没有什么问题啊!遍历的语法也没有用错.请高手指教

搜索更多相关主题的帖子: CheckBox Gridview 遍历 搜索 response 
2007-01-19 12:05
lbhnrg2021
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-8-6
得分:0 

protected void Button1_Click(object sender, EventArgs e)
{
all.DCommd=new System.Data.OleDb.OleDbCommand();
int GridRows = Convert.ToInt32(GridView1.Rows.Count);
int i;
for (i = 0; i < GridRows; i++)
{
int Count = Convert.ToInt32(all.MySet.Tables[DataStr_1].Rows[i].ItemArray[0]);
String Command;
if (((CheckBox)GridView1.Rows[i].FindControl("DelCheck")).Checked)
{
Command = "DELETE FROM LeText WHERE LeText_ID=" + Convert.ToString(Count);
Select.DC(Command, all.MyConn);
all.MyConn.Open();
all.DCommd.ExecuteNonQuery();
all.MyConn.Close();
}
}
}这是原代码!


傲鬼
2007-01-19 13:04
lbhnrg2021
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-8-6
得分:0 

这个是原来数据库的代码!
这个才是控件状态搜索的代码!
all.DCommd=new System.Data.OleDb.OleDbCommand();
int GridRows = Convert.ToInt32(GridView1.Rows.Count);
int i;
for (i = 0; i < GridRows; i++)
{
int Count = Convert.ToInt32(all.MySet.Tables[DataStr_1].Rows[i].ItemArray[0]);
String Command;
bool isChecked = ((CheckBox)GridView1.Rows[i].FindControl("DelCheck")).Checked;
Response.Write(Convert.ToString(isChecked));
}返回的状态全部是FALSE,不管你选中还是没选中!


傲鬼
2007-01-19 13:12
lbhnrg2021
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-8-6
得分:0 
还是FALSE,你自己试试看!郁闷了!javascript这个又不好做.不过还要是感谢你!

傲鬼
2007-01-19 13:48
lbhnrg2021
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-8-6
得分:0 
都没用!这个测试过了!我把原码全部发上去,希望大家讨论下,我开始认为是B/S的问题,但是测试过,状态都有保存啊!而且Gridview我也只绑定一次!没有2次绑定.我做全选设置也是可以的!但是就是按删除按扭的时候,无法搜索CheckBox的Checked状态.不管选还是没选都一个样!Checked都是false值把我搞郁闷了!
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
int GridRows = Convert.ToInt32(GridView1.Rows.Count);
int i;
if (CheckBox1.Checked)
{
for (i = 0; i < GridRows; i++)
{
((CheckBox)GridView1.Rows[i].FindControl("myall")).Checked = true;
}
}
else
{
for (i = 0; i < GridRows; i++)
{
((CheckBox)GridView1.Rows[i].FindControl("myall")).Checked = false;
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
int x = 0;
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
bool bb = CheckBox1.Checked;
CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("myall");
if (cb.Checked)
{
x += 1;
}
}
Response.Write(Convert.ToString(x));
this.CheckBox1.Checked = false;
GridView1.DataBind();
}这就是全选和删除按扭的全部代码!删除按扭这段代码是用来测试,CheckBox的Checked状态的!

傲鬼
2007-01-19 18:02
lbhnrg2021
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-8-6
得分:0 
谢谢大家,我知道了!我已经搞出来了!EnableViewState属性要设置:false,是一个典型的B/S错误,因为起初页面读取数据的时候一直存在Enableviewstate中,也就是说,当你选择自己建立的asp控件的是时候前面状态并没有改变,但是关闭enableviewstate后,状态就不会保存,所以原来的状态刷新后就不会在保存,而它会记录新状态,我们就用这个状态.我自己的理解是这样的!看来要多看看state的教程!搞了一个下午,太谢谢大家了!可能我的理解对于大家来说些累,不过和大家分享是我的快事!

傲鬼
2007-01-19 18:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-116918-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.848593 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved