2012-06-13 30 views
1

单击网格视图中的更新后,代码将成功运行。但是当我检索另一个网页中的数据时,我更新的列是空白的。我不知道为什么会发生这种情况。 下面是这两个更新显示的代码: 这是更新更新gridview后用户输入在列中空白

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

,这你还没有在你的update query, 查询所提到的任何where子句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

我的回答对你有帮助吗? (http://stackoverflow.com/a/11020847/468718) –

回答

0

这些都可能是可能的解决方案或整体的解决方案,我认为将是有益的一部分:

  • 检查loadgrid()row_updating事件之前不叫,因为它就会导致网格失去的变化,回来正常浏览..
  • 还要检查n在此链接了解:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowupdating.aspx
  • 不要让页面编码后面的SQL查询或连接字符串名称,而是使用存储过程或使用一些含有字符串类常量可以通过解决方案。
  • 总是使用sql参数并停止使用字符串连接,因为它会导致sql感染问题。
+0

另请检查您是否已将loadgrid放在if(!isPostBack)中。如果您在page_load()事件内部调用了loadgrid .. –

0

应该是这样的

Update tableName set ColumnName = 'Value' 
where IDcolumn = 1 

其次你应该在存储过程而不是这种方法。

空白栏记录必须是因为你的代码(GridView1.Rows[e.RowIndex].Cells[0].Text) 是提供空白数据,你应该通过调试&看它在运行时的值检查。

0

您的更新声明没有where子句,因此将更新表中的所有行。这可能是你想要的,可能不是。

您的select声明也可能在语法上存在缺陷。它只会成功返回行中有一列的名称值为TextBox1.Text的列,其值包含fd列中的值与td列中的值之间的值。

0

当页面回传时,网格视图的值被刷新。 如果你想在Gridview中保留这些值,你必须把这些值放在Viewstate中以便进一步操作。你必须在回发之前使用Viewstate.add()在viewstate中添加你的Gridview值。 viewstate.add(“key”,value);

希望它可以帮助你。