在网格视图中单击“更新”后,代码才能成功运行。但是当我在另一个网页中检索数据时,我更新的列是空白的。我不知道为什么会这样。 以下是更新和显示的代码: 这是为了更新
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string v = System.Configuration.ConfigurationManager.ConnectionStrings["harish"].ConnectionString;
con = new OracleConnection(v);
con.Open();
string query = "update leave_module1 set name='"+GridView1.Rows[e.RowIndex].Cells[0].Text+"'";
OracleCommand cmd = new OracleCommand(query, con);
cmd.ExecuteNonQuery();
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('The Data has been added');</script>;");
GridView1.EditIndex = -1;
con.Close();
}
这就是loadgrid()
protected void loadgrid()
{
string v = System.Configuration.ConfigurationManager.ConnectionStrings["harish"].ConnectionString;
con = new OracleConnection(v);
con.Open();
cmd = new OracleCommand("select * from leave_module1 where '"+TextBox1.Text+"' between fd and td", con);
dr = cmd.ExecuteReader();
GridView1.DataSource=dr;
GridView1.DataBind();
con.Close();
dr.Close();
}
答案 0 :(得分:0)
您的where
中未提及任何update query
条款,
查询应该是这样的
Update tableName set ColumnName = 'Value'
where IDcolumn = 1
其次,你应该使用存储过程而不是这种方法。
空白列记录必须是因为您的代码(GridView1.Rows[e.RowIndex].Cells[0].Text
)
提供空白数据,你应该通过调试和检查来检查它。在运行时观察它的价值。
答案 1 :(得分:0)
您的更新语句没有where
子句,因此将更新表中的所有行。这可能是你想要的,也可能不是。
您的select
声明在语法上也可能存在缺陷。它只会成功返回存在列的名称为TextBox1.Text
的列,其中包含名为fd
的列中的值与名为{{1}的列中的值之间的值}。
答案 2 :(得分:0)
这些可能是解决方案或整个解决方案的一部分,我认为这些解决方案会有所帮助:
答案 3 :(得分:0)
当页面回发时,网格视图的值会刷新。 如果要保留Gridview中的值,则必须将这些值放在Viewstate中以进行进一步操作。您必须使用Viewstate.add()在回发之前在viewstate中添加Gridview值。 viewstate.add( “钥匙”,值);
希望它对你有所帮助。