GridView遭遇数据类型"是/否",获取gridview的一个单元格的值并更改,附带更新GridView用法

在GridView中的模板列,我不能访问到模板列内的列,正确说是不能访问到对应列的id.所以用下方法

在GridView1中 编辑模板,然后就在 ItemTemplate模式下拖入控件 CheckBox,可以见到源码中:

<ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" Text="xxx"  />
 </ItemTemplate>

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {          
        CheckBox check_value = (CheckBox)GridView1.Rows[e.RowIndex].FindControl("CheckBox1");//定义
       string sqlstr = "update teacher set passed=" + check_value.Checked.ToString() + " where t_name='" + (((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim()) + "'";
            OleDbConnection Conn = dbcenter.Acce_Conn();
            Conn.Open();
            OleDbCommand cmd = new OleDbCommand(sqlstr, Conn);//方法一
            cmd.ExecuteNonQuery();
            Conn.Close();

             mydatabind(); //绑定数据

}

顺带讲下GridView用法

 编辑行protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
         this.GridView1.EditIndex = e.NewEditIndex;
          mydatabind();
    }
  取消编辑  protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
         mydatabind();
    }

  删除行protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {    
        OleDbConnection conn = dbcenter.Acce_Conn();
          conn.Open();
          OleDbCommand command = conn.CreateCommand();
          command.CommandText = "delete  from exam_test where testid=" + System.Convert.ToInt32(GridView1.Rows[e.RowIndex].Cells[x].Text) + ""; //方法二
         command.ExecuteNonQuery();
           conn.Close();
          GridView1.DataBind();

}

分页的处理代码 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
           
            GridView1.PageIndex = e.NewPageIndex; //开始分页处理
            GridView1.PageIndex = e.NewPageIndex;
            string SQL = " select * from exam_test "; //
            GridView1.DataSource = dbcenter.accessGetDataSet(SQL);           
            GridView1.DataBind();
        }

0904近半年来不搞dotnet,很生疏哦。后来在一个系统中要更改一个已经选定的gridview单元格值,也费了点时间.(170309--it text)

update段代码(更改的是 ittest -tch-power表)

 CheckBox check_value = (CheckBox)GridView1.Rows[e.RowIndex].FindControl("CheckBox1");//定义check_value为CheckBox类型
   int level = System.Convert.ToInt32(((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text);  //这次更改的重点哦。就是这里 更改一个已经选定的gridview单元格值 转换为int类型 Controls[0]表示控件的子控件,可以转为textbox,这样才可以获得其对应的单元格的值

如果在gridview的单元格里面对应是其他控件,例如 checkbox,   则可以这样:  

CheckBox check_value = (CheckBox)GridView1.Rows[e.RowIndex].FindControl("CheckBox1");//定义check_value为CheckBox类型,具体参考 ittest ---teacher_ok
         //string sqlstr = "update teacher set passed=" + check_value.Checked.ToString() + " where t_name='" + (((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim()) + "'";
         string sqlstr = "update teach set passed=" + check_value.Checked.ToString() + ",t_level="+level+" where t_name=@t_name";
       OleDbConnection Conn = center.Ace_Conn();
       Conn.Open();
       OleDbCommand cmd = new OleDbCommand(sqlstr, Conn);
       cmd.Parameters.Add("@t_name",OleDbType.VarChar,40);
       cmd.Parameters[0].Value = (((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim());
       cmd.ExecuteNonQuery();
        Conn.Close();
        databind();

慢慢理解.好

原文地址:https://www.cnblogs.com/pyman/p/1326933.html