我这个gridview ID是gvEmailInfo
前台:
    <asp:TemplateField>
  <HeaderTemplate>
  <input id="select_all" onclick="checkFormAll(this.checked)" type="checkbox">
  </HeaderTemplate>
  <ItemTemplate>
  <asp:CheckBox ID="select_one" runat="server" />
  </ItemTemplate>
  </asp:TemplateField>js:
<script type="text/javascript">
        function checkFormAll(chk) {
            form = document.getElementById("select_all");
            for (var i = 0; i < form1.elements.length; i++) {
                if (form1.elements[i].type == "checkbox") {
                    form1.elements[i].checked = chk;
                }
            }
        }
   </script>后台:
  protected void Page_Load(object sender, EventArgs e)
        {
            string sqlstr = "SELECT * FROM messageView WHERE Rreceiver='" + SnoOrTno + "'";
            gvEmailInfo.DataKeyNames = new string[] {"Mno"};
            sqloperate.gvBind(gvEmailInfo, sqlstr);        }
//删除button
  protected void DelSelected_Click(object sender, EventArgs e)
        {
            string str_id = "";
            for (int i = 0; i < this.gvEmailInfo.Rows.Count; i++)
            {
                CheckBox cbox = (CheckBox)gvEmailInfo.Rows[i].FindControl("select_one");
                if (cbox.Checked == true)
                {
                    string id = gvEmailInfo.DataKeys[i].Value.ToString();
                    if (i == this.gvEmailInfo.Rows.Count - 1)
                    {
                        str_id = str_id + id;
                    }
                    else
                    {                        str_id = str_id + id + ",";
                    }                }
               
            }
            string delStr = "DELETE Receiver WHERE Mno in(" + str_id + ") AND Rreceiver='" + SnoOrTno + "'";
            sqloperate.DataCom(delStr);
            gvEmailInfo.DataBind();          }
数据库操作:
    public void DataCom(string sqlstr)
    {
        sqlconn.Open();
        SqlCommand sqlcomm = new SqlCommand(sqlstr, sqlconn);
        sqlcomm.ExecuteNonQuery();
        sqlconn.Close();
    }
    public void gvBind(GridView gv, string sqlstr)
    {
        sqlconn.Open();
        SqlDataAdapter sqldataadapter = new SqlDataAdapter(sqlstr, sqlconn);
        DataSet mydataset = new DataSet();
        sqldataadapter.Fill(mydataset);
        gv.DataSource = mydataset;
        gv.DataBind();
        sqlconn.Close();
    }
    
现在的问题是功能没实现 症结是str_id的值一直为空(运行后 红色处的语句是DELETE Receiver WHERE Mno in() AND Rreceiver='" + SnoOrTno + "'")想说的是这个gridview绑定的是一个视图(也就是messageView),和这个有关系么?请前辈们指教,谢谢!!

解决方案 »

  1.   

     protected void Page_Load(object sender, EventArgs e)
      {
       if(!IsPostBack)
    {  string sqlstr = "SELECT * FROM messageView WHERE Rreceiver='" + SnoOrTno + "'";
      gvEmailInfo.DataKeyNames = new string[] {"Mno"};
      sqloperate.gvBind(gvEmailInfo, sqlstr);
    }
      }
      

  2.   

    gridview 72般绝技 百度下 找找看 里面好多应用的介绍
      

  3.   


    加上以后 去得到值  但gridview的分页又没用了
      

  4.   

    gridview的分页事件是怎么写的
      

  5.   


     protected void gvEmailInfo_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {            gvEmailInfo.PageIndex = e.NewPageIndex;
                gvEmailInfo.DataBind();
             
            }
      

  6.   

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {   
    GridView1.PageIndex = e.NewPageIndex;   
    GridView1.datasource="数据源";   
    GridView1.DataBind();  
    }if(!IsOPostBack)BindData();
      

  7.   

    你的分页写的就不对
    protected void gvEmailInfo_PageIndexChanging(object sender, GridViewPageEventArgs e)
      {  gvEmailInfo.PageIndex = e.NewPageIndex;
     string sqlstr = "SELECT * FROM messageView WHERE Rreceiver='" + SnoOrTno + "'";
      gvEmailInfo.DataKeyNames = new string[] {"Mno"};
      sqloperate.gvBind(gvEmailInfo, sqlstr);
        
      }
      

  8.   

    多说无意义 你研究研究吧
    http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx