1

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

 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

4 回答 4

0

你没有提到你的任何where子句update query,查询应该是这样的

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

其次,您应该使用存储过程而不是这种方法。

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

于 2012-06-13T10:11:24.127 回答
0

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

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

于 2012-06-13T10:13:06.210 回答
0

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

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

当页面回发时,gridviews 的值会被刷新。如果要保留 Gridview 中的值,则必须将这些值放入 Viewstate 中以进行进一步操作。在回发之前,您必须使用 Viewstate.add() 在视图状态中添加 Gridview 值。viewstate.add("key",value);

希望它可以帮助你。

于 2012-06-25T08:09:22.907 回答