用checkbox批量删除的问题~出先问题了,在线等解决利马给分
OleDbConnection myConn = new OleDbConnection(Class1.ConnString);
myConn.Open();
string strDelId="";
foreach (GridViewRow i in GridView1.Rows)
{
CheckBox ckb = (CheckBox)i.FindControl("CheckBox");
if (ckb.Checked)
{
strDelId = GridView1.DataKeys[i.RowIndex].Value.ToString();
}
string delsql = "delete from userreg where id=" + strDelId;
OleDbCommand cmd = new OleDbCommand(delsql,myConn);
cmd.ExecuteNonQuery();
}
myConn.Close();
出错了显示下面错误:
--------------------------
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 66: {
行 67: CheckBox ckb = (CheckBox)i.FindControl("CheckBox");
行 68: if (ckb.Checked)
行 69: {
行 70: strDelId = GridView1.DataKeys[i.RowIndex].Value.ToString();
源文件: f:\homework\netbest2\WebSite\checkbox.aspx.cs 行: 68
问题点数:40、回复次数:12Top
1 楼jingye721(我不是弱者≮我メ他妈的谁欺负我,我全拿小本记着!≯)回复于 2006-11-02 18:46:20 得分 0
foreach (DataGridItem item in dbStaffList.Items)
{
if(((CheckBox)item.FindControl(controlID)).Checked==true )
{
...
}
}Top
2 楼lizhizhe2000(武安侯)回复于 2006-11-02 18:47:01 得分 0
OleDbConnection myConn = new OleDbConnection(Class1.ConnString);
myConn.Open();
string strDelId="";
foreach (GridViewRow i in GridView1.Rows)
{
CheckBox ckb = (CheckBox)i.FindControl("CheckBox");
if (ckb.Checked)
{
strDelId = GridView1.DataKeys[i.RowIndex].Value.ToString();
string delsql = "delete from userreg where id=" + strDelId;
OleDbCommand cmd = new OleDbCommand(delsql,myConn);
cmd.ExecuteNonQuery();
}
}
myConn.Close();Top
3 楼sbqcel(空空儿)回复于 2006-11-02 18:48:07 得分 0
CheckBox ckb = (CheckBox)datagrid.Items[e.Item.ItemIndex].FindControl("CheckBox");
我的是2003的,使用的datagrid,不知道2005里是否一样,你可以试试Top
4 楼lizhizhe2000(武安侯)回复于 2006-11-02 18:48:30 得分 0
老大,如果你 的
if (ckb.Checked)
{
strDelId = GridView1.DataKeys[i.RowIndex].Value.ToString();
}
不执行,那么strDelId为空Top
5 楼lizhizhe2000(武安侯)回复于 2006-11-02 18:49:22 得分 0
另外string delsql = "delete from userreg where id=" + strDelId;
应该改写成
string delsql = "delete from userreg where id='" + strDelId+"'";
如果你的id是字符型的Top
6 楼sbqcel(空空儿)回复于 2006-11-02 18:49:25 得分 0
晕死,对不起啊。。。Top
7 楼patrickpan(离别钩)回复于 2006-11-02 18:51:23 得分 0
foreach (GridViewRow i in GridView1.Rows)
{
CheckBox ckb = (CheckBox)i.FindControl("CheckBox");
if(ckb != null)
{
if (ckb.Checked)
{
strDelId = GridView1.DataKeys[i.RowIndex].Value.ToString();
}
string delsql = "delete from userreg where id=" + strDelId;
OleDbCommand cmd = new OleDbCommand(delsql,myConn);
cmd.ExecuteNonQuery();
}
}
Top
8 楼jingye721(我不是弱者≮我メ他妈的谁欺负我,我全拿小本记着!≯)回复于 2006-11-02 18:52:49 得分 0
应该把 string delsql = "delete from userreg where id=" + strDelId;
OleDbCommand cmd = new OleDbCommand(delsql,myConn);
cmd.ExecuteNonQuery();
放入if语句中Top
9 楼patrickpan(离别钩)回复于 2006-11-02 18:54:18 得分 0
foreach (GridViewRow i in GridView1.Rows)
{
CheckBox ckb = (CheckBox)i.FindControl("CheckBox");
if(ckb != null)
{
if (ckb.Checked)
{
strDelId = GridView1.DataKeys[i.RowIndex].Value.ToString();
string delsql = "delete from userreg where id=" + strDelId;
OleDbCommand cmd = new OleDbCommand(delsql,myConn);
cmd.ExecuteNonQuery();
}
}
}
Top
10 楼hhhui2008(麦田稻农)回复于 2006-11-04 10:19:52 得分 0
行 67: CheckBox ckb = (CheckBox)i.FindControl("CheckBox");
把("CheckBox") 改成("CheckBox1")Top
11 楼haidazi(.net)回复于 2006-11-04 10:41:11 得分 0
估计是找不到CheckBox的原因。
试下直接引用
CheckBox ckb = (CheckBox)i.Controls[0];Top
12 楼D__D(四月·我爱我妻)回复于 2006-12-12 15:17:05 得分 0
学习Top




