日期:2014-05-19  浏览次数:20754 次

大家我好! 我遇到一个简单的问题,请大家帮帮忙!!
为什么我每次更新时都是得到它的原来的值(就是第一次给DataGrid的值),根本就更新不了代码如下:
Trace.Warn(sql);这个每次输出的都是原来的值,所以就更新不了,这是为什么啊??

      protected   void   Gridupdate(Object   sender,DataGridCommandEventArgs   e)   {
                string   sql,a,b;
                a=((TextBox)e.Item.Cells[1].Controls[0]).Text;
                b=((TextBox)e.Item.Cells[2].Controls[0]).Text;
                sql   =   "update   cpxlh   set   cpxlh=   ' "   +   a   +   " '   ,   cpbh= ' "   +   b   +   " '     where   id= "   +
                        (int)dg.DataKeys[e.Item.ItemIndex];
                Trace.Warn(sql);
             
                OleDbCommand   comm   =   new   OleDbCommand();
                comm.CommandText   =   sql;
                comm.Connection   =   conn;
               
                try
                {
                        comm.ExecuteNonQuery();
                        Response.Write( " <script   language=javascript> alert( '修改成功! '); </script> ");
                        dg.EditItemIndex   =   -1;
                        gridbind();

                }
                catch   (OleDbException)
                {
                        Response.Write( " <script   language=javascript> alert( '修改失败! ') </script> ");
                }
                finally   {
                        gridbind();
                        comm.Connection.Close();
                }
       
        }

------解决方案--------------------
设断点跟踪下,看下赊购凝成的sql语句是否有问题.
即确定下列变量是否有值.
a=((TextBox)e.Item.Cells[1].Controls[0]).Text;
b=((TextBox)e.Item.Cells[2].Controls[0]).Text;
(int)dg.DataKeys[e.Item.ItemIndex]

------解决方案--------------------
大概是Page_Load里没有if(!Page.IsPostBack){Bind()}吧。
------解决方案--------------------
finally {
gridbind();
comm.Co