更新网格视图后,用户输入在列中为空
本文关键字:输入 用户 网格 视图 更新 | 更新日期: 2023-09-27 18:36:56
在网格视图中单击更新后,代码成功运行。但是当我在另一个网页中检索数据时,我更新的列是空白的。我不知道为什么会这样。以下是用于更新和显示的代码:这是为了更新
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();
}
这个负载网格()
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();
}
这些可能是可能的解决方案,或者是我认为会有所帮助的整个解决方案的一部分:
- 检查 loadgrid() 是否在事件发生之前没有被调用row_updating因为它会导致网格丢失更改并返回到正常视图。
- 还检查 n 了解 从这个链接: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowupdating.aspx
- 不要将 sql 查询或连接字符串名称编码在页后,而是使用存储过程或使用某些包含可通过解决方案访问的字符串常量的类。 始终使用 sql
- 参数并停止使用字符串 concat,因为它会导致 sql 感染问题。
您在update query
中没有提到任何where
子句,查询应该是这样的
Update tableName set ColumnName = 'Value'
where IDcolumn = 1
其次,您应该使用存储过程而不是此方法。
空白列记录一定是因为您的代码(GridView1.Rows[e.RowIndex].Cells[0].Text
)正在提供空白数据,您应该通过在运行时调试和观察其值来检查它。
您的更新语句没有where
子句,因此将更新表中的所有行。这可能是你想要的,也可能不是。
您的select
语句也可能在语法上存在缺陷。 它只会成功返回以下行:其中有一列的名称为 TextBox1.Text
,该列包含名为 fd
的列中的值与名为 td
的列中的值之间的值。
当页面回发时,网格视图的值将刷新。如果要在 Gridview 中保留这些值,则必须将这些值放在视图状态中以便进一步操作。您必须使用 Viewstate.add() 在回发之前在视图状态中添加 Gridview 值。viewstate.add("key",value);
希望对您有所帮助。