protected void Button2_Click(object sender, EventArgs e)
    {
        foreach (DataListItem dli in DataList1.Items)
        {
            CheckBox chk = dli.FindControl("a") as CheckBox;
            if (chk.Checked)
            {
                Label objlabel = dli.FindControl("lb_id") as Label;
                if (objlabel!=null)
                {
                    int User_Id = Convert.ToInt16(objlabel.Text.Trim());
                    del_person(User_Id);
                }            }
        }
        BindDate();
    }    public SqlDataReader del_person(int User_id)
    {
        Database db = new Database();
        SqlDataReader dr = null;
        SqlParameter[] param = {
            db.CreateInParam("@id", SqlDbType.Int, 0, User_id)
        };
        db.RunProc("del_per", param,out dr);
        return dr;
    }set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[del_per]
(
@id int
)
as
delete from person where ID=@id使用了datalist实现一行多条记录,但无法删除了,没有返回错误,点“删除”页面一闪而过,和刷新差不多,后台数据库也没有删除记录

解决方案 »

  1.   

    估计是你在删除的时候又重新绑定了数据而没有保持状态,简单的说就是你刷新的时候又重新加载了,你把绑定事件写在            if (!IsPostBack) 里就可以了!
      

  2.   

    Label objlabel = dli.FindControl("lb_id") as Label;
    if (objlabel!=null)  这个是不是空的?
      

  3.   

    del_person(User_Id);应该是这边User_Id没有传过来,你一行多条记录,User_Id唯一吗
    删除每次只能删除一条
      

  4.   

    非常感谢大家的热心回答!
    我把绑定数据放入 !IsPostBack还是不行,我的是连数据库里的删除操作都没有执行
    我的lb_id是绑定了数据库的ID的,所以它不是空的
    不能删除多行记录我也想到,但是我只删除一记录也还是老样子。
    不过我本人觉得是不是datalist的控件没有获取到呢?静待高手回答,不胜感激!
      

  5.   

    你在提交按钮上加一个JS事件,就是遍历一下所有已经选中的的数据,把CheckBox的value的值设置为你的ID值,然后用一个隐藏控件来保存这个值,在JS的事件里累加,在后台获取这些值,明白?