GridView_Updating事件里更新不了新值...
代码:private void up()
{
DBConn con = new DBConn();
string sql = "select * from test";
DataSet ds = new DataSet();
ds = con.ExecuteQuery(sql);
this.GridView2.DataSource = ds.Tables[0];
this.GridView2.DataBind();
con.Close();
}
protected void Page_Load(object sender, EventArgs e)
{
up();
}
protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
{
this.GridView2.EditIndex = e.NewEditIndex;
this.GridView2.DataBind();
(GridView2.Rows[e.NewEditIndex].Cells[0].Controls[0] as TextBox).Enabled = false;
up();
}
protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string getid = ((TextBox)GridView2.Rows[e.RowIndex].Cells[0].Controls[0]).Text.Trim();
string name = ((TextBox)GridView2.Rows[e.RowIndex].Cells[1].Controls[0]).Text.Trim();
string num = ((TextBox)GridView2.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString().Trim();
string address = ((TextBox)GridView2.Rows[e.RowIndex].Cells[3].Controls[0]).Text.Trim();
DBConn con = new DBConn();
string sql = "update test set name='" + name + "',num='" + num + "',address='" + address + "' where test_id='" + getid + "'";
Boolean boo = con.ExecuteUpdate(sql);
con.Close();
this.GridView2.EditIndex = -1;
up();
this.Lblup.Text = "更新数据成功!";
}
当我点编辑的时候显示出了编辑状态,然后我就针对显示的编辑状态改变文本框里面的内容如name这一项原来是sun,我改为sunshine.再点保存后还是原来的值,郁闷死了。也试过在page_load里边加上if(!Page.IsPostback)但还是不行更新不了。OK,又断点调试,发现点保存的时候走到GridView_Updating事件里去逐个的执行:string name = ((TextBox)GridView2.Rows[e.RowIndex].Cells[1].Controls[0]).Text.Trim();的text的值还是原来那个sun根本就没有改变。晕死了,只有求助各位大侠的帮忙了. --------------------编程问答-------------------- protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
up();
}
} --------------------编程问答-------------------- ls正解 --------------------编程问答-------------------- 试过的,还是不行的。哎..............郁闷完了! --------------------编程问答-------------------- string sql = "update test set name='" + name + "',num='" + num + "',address='" + address + "' where test_id='" + getid + "'";
执行这句时,name变量是否改变? --------------------编程问答-------------------- 改变了的,但还是原来那个值 --------------------编程问答-------------------- http://www.zhibin.cn/article.asp?id=10
看看上面的,有详细的说明几解决办法 --------------------编程问答-------------------- protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
up();
}
}
protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
{
this.GridView2.EditIndex = e.NewEditIndex;
up();
(GridView2.Rows[e.NewEditIndex].Cells[0].Controls[0] as TextBox).Enabled = false;
}
--------------------编程问答-------------------- 楼上正解
你编辑的时候需要重新绑定过一次数据 --------------------编程问答-------------------- 一个新的gridview总是需要给他指定一个datasouce,然后databind一下!他的功能很强大,但是总是会出现许多问题。
这次讲的是gridview在使用自己的更新方法时,总是取到textbox未更新前的值。就是数据库原来的值。
出现这种问题的朋友,你检查下是不是把databind写在了pageload里面呢 ?而且没有进行ispostback,就直接让他databind() ?
这就是问题的所在,我们必须在pageload里面指定gridview的数据源(datasource),然后绑定(databind),而我们在处理RowUpdating的委托函数之前,会先执行完pageload再执行其他事件函数。因此,在执行RowUpdating对应的处理函数之前,数据已经又被复原为数据库里的初试值。
修改这个错误的方法,很简单,把gridviewobject.DataBind()放到if(!IsPostBack) 里面
--------------------编程问答-------------------- 楼上的也不行了,我刚遇到这样的问题,以前都是用那个,datasource控件作的,不过成功了 --------------------编程问答-------------------- --------------------编程问答-------------------- 7楼正解吧
你还没更新就从新绑定,肯定还是原来的值 --------------------编程问答-------------------- 我也遇到了这个问题。用9楼的方法做了。结果发现丢失绑定值了。结果还是不能进行更新。
我是用NHibernate持久化数据库的,专门谢了一个数据处理的接口。现在是在新建的网页中测试接口运行效果。结果就遇到了上面类似的问题。郁闷啊! --------------------编程问答--------------------
讲的非常好 --------------------编程问答--------------------
(GridView2.Rows[e.NewEditIndex].Cells[0].Controls[0] as TextBox).Enabled = false;有什么用希望大侠指点,没有它也能够得到想要的效果,加上了反而会报错,急!!!
补充:.NET技术 , C#