繁体   English   中英

RegisterStartupScript似乎不在更新面板中的页面回发上工作

[英]RegisterStartupScript doesn't appear to be working on page postback within update panel

好的 - 所以我正在使用一个使用自定义日期选择器控件的系统(我知道还有其他的...但为了一致性,我想了解为什么我当前的问题正在发生并修复它)。

因此,带有文本框和Page_PreRender的自定义用户控件执行此操作:

protected void Page_PreRender(object sender, EventArgs e)
    {

        string clientScript = @"
        $(function(){
        $('#" + this.Date1.ClientID + @"').datepicker({dateFormat: 'dd/mm/yy', constrainInput: true});
        });";
        Page.ClientScript.RegisterStartupScript(this.GetType(), this.ClientID, clientScript, true);

        //Type t = this.GetType();
        //if (!Page.ClientScript.IsStartupScriptRegistered(t, this.ClientID))
        //{
        //    Page.ClientScript.RegisterStartupScript(t, this.ClientID, clientScript, true);
        //}
    }

忽略注释掉的东西 - 那是我尝试不同的东西 - 没有帮助。

我的问题是,当我加载页面时,这一切都正常。 但是,如果我从下拉列表中选择一些导致页面回发的内容 - 当我点击我的日期字段时,它们就会停止工作。 就像我应该能够点击进入文本框一样,会出现一个漂亮的日历控件。 但在回发后,没有出现漂亮的日历控件!

它目前全部包含在(在托管页面中)更新面板中。 所以我评论了更新面板的东西,日期在页面回发后工作。 所以它似乎与该更新面板有关。

有什么建议吗?

谢谢!!

您是否尝试过ScriptManager而不是Page.ClientScript? 我查看了之前使用UpdatePanels和jQuery编写的一些代码,并且我使用了ScriptManager。 我认为如果脚本未在ScriptManager中注册,则在部分回发期间该脚本不可用。

看起来像这样:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "DatePickerScript", clientScript, true);

暂无
暂无

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

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