protected void btn_Ok_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                CheckBox cka = (CheckBox)GridView1.Rows[i].FindControl("chkid");
                if (cka.Checked)
                {                    int id = Convert.ToInt32(GridView1.DataKeys[i].Value.ToString());                    string  strsql = "delete from orders where id='" + id + "'";                    string strsql123 = "select pdfPath from orders where id ='" +id+ "'";
                      DataRow drw = DBFun.GetDataRow(strsql123);
                    
                       string filename = drw["pdfPath"].ToString();
                       if (Directory.Exists(filename) == false)
                       {
                           if (DBFun.ExecuteUpdate(strsql))
                           {
                               ltl_Msg.Text = "删除成功!";
                               DataView dvlist = DBFun.GetDataView("select * From orders order by id desc");
                               AspNetPager1.RecordCount = dvlist.Table.Rows.Count;
                               Session["dvlist"] = dvlist;
                               bindData();
                           }
                       }
                       else
                       {                           string path = Server.MapPath("..//uploadpic//" + filename);
                           System.IO.File.Delete(path);
                           if (DBFun.ExecuteUpdate(strsql))
                           {
                               ltl_Msg.Text = "删除成功!";
                               DataView dvlist = DBFun.GetDataView("select * From orders order by id desc");
                               AspNetPager1.RecordCount = dvlist.Table.Rows.Count;
                               Session["dvlist"] = dvlist;
                               bindData();
                           }
                       }
                          
                     }            }        }

解决方案 »

  1.   

    你设个断点跟踪一下,看看每次循环取到的id是不是都是同一个值?另外,建议你先把要删除的id记下来,然后批量删除,最后再绑定数据
    你现在没删除一个就绑定一下,这要是选择多了性能很差
      

  2.   

    另外你在循环内部重新绑定后(bindData方法不知道是不是重新绑定GridView1了),改变外面的整个循环长度...
      

  3.   

    建议先找到要删除的所有ID,再一次性将所有要删除的数删除。你的代码每删除一次就重新从数据库中获取数据将DataView中的数据刷新,这样你删除一条后DataView中的其它数据都是未选中状态了,还有你这样做的话你的for循环中的选择条件也变了。
      

  4.   

    额,自己给自己下套了这玩意如果你里面不放啥服务器的checkbox,而是转换成模板列,里面放html的input
    后端不用循环就只管 "delect xxx where id in (" +request["name"]+")" 一句就ok了