日期:2014-05-18  浏览次数:20368 次

帮我看看这段代码有什么问题
一个GridView,在GridView的更新事件下,我隐藏GridView,显示一个FormView,显示内容的条件是GridView的当前行ID,然后FormView里有一个删除按钮,我在这下面输入msgID,为什么没反应呢?输出一串字符串是可以的。
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
  {
  msgID = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
  FormView1.Visible = true;
  GridView1.Visible = false;
  db.RunSQL("select * from message where msgID='" + msgID + "'", ref ds, "msg");
  FormView1.DataSource = ds.Tables["msg"].DefaultView;
  FormView1.DataBind();
  }

protected void btnDelete_Click(object sender, EventArgs e)
  {
  Response.Write(msgID);
  Response.Write("aaaaaaaa");
  }


------解决方案--------------------
不是没反应,是msgID为空了,使用静态变量或者viewstate来存储msgID。
------解决方案--------------------
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20070923191343HDH&fumcde=FUM20041006161839LRJ
------解决方案--------------------
你的代码msgID 生命周期只限于GridView1_RowUpdating中~
------解决方案--------------------
因为btnDelete_Click事件是一个服务器事件,在调用它之前页面会重新加载,在加载的时候msgID又回到了默认值状态null
所以Response.Write(msgID); 看不出输出结果;如果想看到的话,建议你用session或viewstate把它存起来,然后再从里面读就可以了