在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();
慢慢理解.好