使用更新面板时,代码后面的RegisterStartupScript无法正常工作

时间:2013-12-31 22:12:23

标签: asp.net updatepanel popupwindow buttonclick

我创建了一个radiobutton列表,后跟一个按钮。我可以从radiobutton列表中选择一个项目,然后单击按钮执行某些操作。如果单击按钮而不选择radiobutton列表中的任何选项,我希望页面弹出一个窗口。我的代码隐藏是这样的:

    protected void ButtonPP_Click(object sender, EventArgs e)
    {
        if (radioBtnPP.SelectedIndex < 0)
        {
            String csname1 = "PopupScript";
            Type cstype = this.GetType();

            // Get a ClientScriptManager reference from the Page class.
            ClientScriptManager cs = Page.ClientScript;

            // Check to see if the startup script is already registered.
            if (!cs.IsStartupScriptRegistered(cstype, csname1))
            {
                StringBuilder cstext1 = new StringBuilder();
                cstext1.Append("<script type=text/javascript> alert('Please Select Criteria!') </");
                cstext1.Append("script>");

                cs.RegisterStartupScript(cstype, csname1, cstext1.ToString());
            }
        }
   }

我的html部分是:

    <asp:RadioButtonList class ="radioBtn" ID="radioBtnACO" runat="server">
           <asp:ListItem Text="All Dim" />
           <asp:ListItem Text="Select Dim" />
    </asp:RadioButtonList>
    <asp:Button id ="ButtonPP" class ="buttonRight" runat="server" Text="Run PP" OnClick="ButtonPP_Click" />

这很好用。但是,现在我不想在单击按钮时刷新整个页面,所以我使用updatepanel。我将我的HTML代码更改为以下内容:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="ControlUpdatePanel" runat="server" Visible="True">
        <ContentTemplate>  
           <asp:RadioButtonList class ="radioBtn" ID="radioBtnACO" runat="server">
               <asp:ListItem Text="All Dim" />
               <asp:ListItem Text="Select Dim" />
           </asp:RadioButtonList>
           <asp:Button id ="ButtonPP" class ="buttonRight" runat="server" Text="Run PP" OnClick="ButtonPP_Click" />
        </ContentTemplate>
   </asp:UpdatePanel>  

但是现在我的代码不再起作用...如果我没有从单选按钮列表中选择任何选项而只是单击按钮,则不会弹出任何窗口:(我确信我的代码隐藏仍然执行但似乎喜欢它只是没有传递到我的.aspx页面...

有人请帮帮我吗?我现在不知道该怎么办......数百万的感谢!

1 个答案:

答案 0 :(得分:1)

您需要将 ScriptManager.RegisterStartupScript 用于 Ajax

protected void ButtonPP_Click(object sender, EventArgs e)
{
    if (radioBtnACO.SelectedIndex < 0)
    {
        string csname1 = "PopupScript";

        var cstext1 = new StringBuilder();
        cstext1.Append("alert('Please Select Criteria!')");

        ScriptManager.RegisterStartupScript(this, GetType(), csname1,
            cstext1.ToString(), true);
    }
}