GridView实现选取多条记录并删除

21 篇文章 0 订阅
14 篇文章 0 订阅

GridView暂时不知道是否有多选功能,老师又让做出来只能按自己的方法实现

数据的绑定不再写直接写过程和思路,在GridView中添加模板在模板里加入CheckBox,但在后台不能访问建好的CheckBox,问题就出在这里。

遍历CheckBox的属性和事件,发现了CheckBox有个CheckedChanged于是后台借助这个事件来得到具体是哪个CheckBox激发的时间。

想办法确立选中的Checkbox与选中的数据对应,CheckBox的属性可以喝数据库的信息绑定,于是我将每条数据的id与checkbox的CssClass属性绑定在一起

于是可以通过2得到选中数据的id,并且赋值给Session存储用户的选择。

当用户最后点击确定删除后,再从Session中读取用户最后选择的数据,用户在选择过程中会有选中然后又取消的可能,通过程序保证用户最终选择的数据的id值都存储在Seesion【“xyuan”】中

//获取用户最终的选择

        protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox x = (CheckBox)sender;//1这里用来接收具体是哪CheckBox激发的事件

            string x1 = Convert.ToString(Session["xyuan"]);
            string h1 = "a";
            if (x1 == "")//x1等于空说明用户是第一次点击,所以直接复制,第二次可能是取消选择。
            {
                Session["xyuan"] = Session["xyuan"] + x.CssClass + ",";//2得到cssclass的值,值与id相等
            }
            else
            {
              
                string[] n = Session["xyuan"].ToString().Split(',');//3通过特殊符号将保存在session中的字符串变为单个字符
                Session["x"] = "";
                foreach (string h in n)//4通过该循环得到最后选中的是哪个,即用户可能选择后又放弃选择,
                {
                    if (h == x.CssClass)//果session中含有被选中的行则为h1赋值
                    {
                        h1 = "l";
                     
                    }
                    else
                    {//session中如果与不被选中的行不同则赋值给x若果有则不赋值,h1的值改变ze将x复制个xyuan,若不变则相反

//session["x"]中保存的永远是被选中

                        Session["x"] = Session["x"] + h+",";
                     
                    }


                }
                if (h1 == "a")//如果h1的值不变书名Session【“xyuan”】中不含有被选中的数据,然后将数据保存进去
                {
                    Session["xyuan"] = Session["xyuan"] + x.CssClass + ",";//得到cssclass的值,值与id相等
                }
                else if (h1 == "l")//h1如果等于l说明session中含有被选中的行,但Session【“x”】中不会保存重复的项,所以将值赋给Session【“xyuan”】以便下次重新操作
                {
                    Session["xyuan"] = Session["x"].ToString();
                 }

 }
        }

 

//删除用户最终的选择

  protected void Button1_Click(object sender, EventArgs e)
        {  int sid=1;
              string[] n = Session["xyuan"].ToString().Split(',');
              foreach (string x in n)
              {
                  if (x == "")
                  { }
                  else {
                    sid = Convert.ToInt32(x);
                    xclass1.ExecuteNonQuery(sid);//调用删除方法循环删除数据
                  
                  }
             
              }
              Response.Redirect("xyhgl.aspx");
          
        }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值