更新gridview后,用户输入在列中为空白

时间:2012-06-13 10:05:17

标签: c# asp.net .net gridview oracle11g

在网格视图中单击“更新”后,代码才能成功运行。但是当我在另一个网页中检索数据时,我更新的列是空白的。我不知道为什么会这样。 以下是更新和显示的代码: 这是为了更新

 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();

}

4 个答案:

答案 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)

这些可能是解决方案或整个解决方案的一部分,我认为这些解决方案会有所帮助:

  • 检查在row_updating事件之前是否未调用loadgrid(),因为这会导致网格丢失更改并返回到正常视图..
  • 另请查看此链接:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowupdating.aspx
  • 不要将sql查询或连接字符串名称保留在页面后面,而是使用存储过程或使用一些包含可访问的字符串常量的类,这些类是通过解决方案。
  • 始终使用sql参数并停止使用字符串concats,因为它会导致sql感染问题。

答案 3 :(得分:0)

当页面回发时,网格视图的值会刷新。 如果要保留Gridview中的值,则必须将这些值放在Viewstate中以进行进一步操作。您必须使用Viewstate.add()在回发之前在viewstate中添加Gridview值。 viewstate.add( “钥匙”,值);

希望它对你有所帮助。