技术开发 频道

Button与页面回递


【IT168技术文档】

  今天,在做项目的时候,页面中用了两个updatePanel,来实现页面的异步更新。用一个updatePanel中的Button来控制另一个 updatePanel中内容的更新,奇怪的是其显示的内容还是原来的内容。为简单起见,我用一个简单的例子来描述我项目中出现的问题。
  首先页面代码:
<body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> <asp:Label ID="Label1" runat="server" Text="BeforeSubmit"></asp:Label> </ContentTemplate> </asp:UpdatePanel> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Always"> <ContentTemplate> <asp:TextBox ID="TextBox2" runat="server"> </asp:TextBox> <asp:Button ID="Button2" runat="server" Text="Button" /></ContentTemplate> </asp:UpdatePanel> </div> </form> </body>
  在页面中我定义了两个updatePanel,用updatePanel中的Button1来控制updatePanel2种的TextBox2的取值。后台代码如下:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { TextBox2.Text = Label1.Text; } protected void Button1_Click(object sender, EventArgs e) { Label1.Text = "AfterSubmit"; } }
  在Page_Load()方法中修改TextBox2中的值,但执行结果:

  TextBox2中的值并没有像想象中的发生变化还是“Beforesubmit",但是再回递页面的话,TextBox2中的值就变成了“AfterSubmit”。
  这是为什么呢?通过设置断点,发现,当Button回递页面的时候,先执行的是Page_Load()方法,然后再执行OnClick事件中的Button1_Click(object sender, EventArgs e)方法。这就是问题的根结。
  说来真是惭愧,用了这么多button的OnClick事件,竟然不知道事件触发时,系统到底做了哪些工作,导致了这个错误。哎,看来以后学习还是得多上点心啊。
0
相关文章