GridView第一列是CheckBox,最后一列是删除,在Load事件里加上了if(!IsPostBack)这个判断,复选框被选中时能返回值,但删除功能报错,当不用if(!IsPostBack)这个判断,直接加载GridView时,删除功能正常,但复选框被选中时不能返回值,小弟很是费解,不知何因,求各路英雄帮忙,不慎感激。

解决方案 »

  1.   

    这个就是asp.net的回发机制,看看这方面的资料吧!
      

  2.   

    发一个我写过的类似的你看下          protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["teachersid"] == null)
            {
                Response.Redirect("login.aspx");
            }
            else
            {
                if (!IsPostBack)
                {
                    GridViewBind();
                }
            }
        }
            protected void GridViewBind()
        { 
            int flag=1;
            if ((string)Session["teachersid"] == "admin")
            {
                GridView1.DataSource = UsersManager.BllGetAllUsersInfo(flag);
            }
            else
            {
                flag = 0;
                GridView1.DataSource = UsersManager.BllGetAllUsersInfo(flag);
            }
            GridView1.DataBind();
        }
            protected void ImageButtonDelete_Click(object sender, ImageClickEventArgs e)
        {
            for (int i = 0; i < this.GridView1.Rows.Count; i++)
            {
                bool isChecked = ((CheckBox)GridView1.Rows[i].FindControl("chkSelected")).Checked;
                if (isChecked)
                {
                    string userID = GridView1.Rows[i].Cells[2].Text;
                    if (UsersManager.DeleteUserByUserId(userID))
                    {
                        //Response.Write("<script language=javascript>alert('删除成功!')</script>");
                        lblMessage.Text = "删除成功!";
                    }
                    else
                    {
                        //Response.Write("<script language=javascript>alert('" + userID + " 删除失败!')</script>");
                        lblMessage.Text = "'" + userID +" ' 删除失败!";
                    }            }
            }
            GridViewBind();
        }
      

  3.   

    if(!IsPostBack)
     BindData();
    foreach (RepeaterItem item in Repeater1.Items)
      {
      CheckBox Chk= (CheckBox)item.FindControl("chk");//通过Hiddenfiled获取ID
      if(Chk.Checked)
      {
        
      }
      }
    服务端控件要刷新
     <input type="checkbox" name='ckbName' value='<%# Container.DataItem%>' /><%# Container.DataItem%>
    </ItemTemplate>
        
      protected void btn_Click(object sender, EventArgs e)
      {
      value = Request.Form["ckbName"];} 
      

  4.   

    我一般是用JQUERY还获取所有的CHECKBOX,而每个CHECKBOX的VALUE都是赋值了主键的数据然后利用AJAX发送回去选中的文本比如123#456#789#111这样服务器端SPLIT(‘#’)下来删除