简体   繁体   English

response.redirect在更新面板中使用计时器刻度不起作用

[英]response.redirect not working within update panel using timer tick

I need to redirect page using a button within a update panel. 我需要使用更新面板中的按钮来重定向页面。 but when I try this It didn't work for me. 但是当我尝试这样做时,它对我不起作用。 can anyone help me on this??/. 谁可以帮我这个事??/。 Please Find My Code Below. 请在下面找到我的代码。

   <body>
     <form id="form1" runat="server">
          <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
            <asp:Label ID="Label2" runat="server" Text="Label" Width="345px"></asp:Label><br />
                    <br />    
                    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>     
                    <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>        
                </ContentTemplate>
                <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
                 <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />

                </Triggers>
            </asp:UpdatePanel>
              <asp:Timer ID="Timer1" runat="server" ontick="Timer1_Tick" Interval="500">
                    </asp:Timer>
            <br />
            <asp:Button ID="Button1" runat="server" Text="Button" Width="344px" OnClick="Button1_Click" /><br />
            <asp:Button ID="Button2" runat="server" Text="Button" />
            <br />
            <br />
            &nbsp;</div>
    </form>
              </body>

My Code Behind Code 我的代码背后的代码

public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {


        }
        protected void Button1_Click(object sender, EventArgs e)
        {


        }
        public void imgBtn_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/HotelResult.aspx");

        }

        protected void Timer1_Tick(object sender, EventArgs e)
        {
            Timer1.Enabled = false;
            Label1.Text = DateTime.Now.ToString();
            Label2.Text = DateTime.Now.ToString();
            Label3.Text = DateTime.Now.ToString();
            ImageButton testbtn = new ImageButton();
            testbtn.ID = "testbtnid";
            testbtn.Click += new System.Web.UI.ImageClickEventHandler(this.imgBtn_Click);
            testbtn.ImageUrl = "images/book-btn.png";
            PlaceHolder1.Controls.Add(testbtn);
        }



    }

The problem here is that ImageButton is added to the page only after timer tick. 这里的问题是ImageButton 在计时器滴答之后添加到页面。 If you want server-side handlers to be invoked for such dynamically added controls, you have to added the to the page on every postback. 如果要为这种动态添加的控件调用服务器端处理程序,则必须在每次回发时将其添加到页面中。 Here is how it can be done using key view state: 使用键视图状态的方法如下:

protected void Page_Load(object sender, EventArgs ea)
{
    bool? addHotelResultButton = ViewState["AddHotelResultButton"] as bool?;
    if (addHotelResultButton.HasValue && addHotelResultButton.Value)
    {
        AddHotelResultButton();
    }
}

protected void Timer1_Tick(object sender, EventArgs e)
{
    ViewState["AddHotelResultButton"] = true;
    AddHotelResultButton();
}

protected void AddHotelResultButton()
{
    Timer1.Enabled = false;
    Label1.Text = DateTime.Now.ToString();
    Label2.Text = DateTime.Now.ToString();
    Label3.Text = DateTime.Now.ToString();
    ImageButton testbtn = new ImageButton();
    testbtn.ID = "testbtnid";
    testbtn.Click += new System.Web.UI.ImageClickEventHandler(this.imgBtn_Click);
    testbtn.ImageUrl = "images/heroAccent.png";
    PlaceHolder1.Controls.Add(testbtn);
}

I would do it like this : 我会这样做:

  • Put your button inside your updatePanel and disable it 将按钮放入updatePanel并将其禁用

  • Put it as a trigger inside the <triggers> tag 将其作为触发器放在<triggers>标记内

  • When the tick event come, enable your button 滴答事件到来时,启用您的按钮

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM