17

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

所以它是一个带有文本框的自定义用户控件,并且在 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);
        //}
    }

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

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

它目前全部包含在更新面板中(在托管页面中)。因此,我注释掉更新面板的内容,并且日期在页面回发后有效。所以它似乎与那个更新面板有关。

请问有什么建议吗?

谢谢!!

4

1 回答 1

31

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

看起来像这样:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "DatePickerScript", clientScript, true);
于 2010-06-09T09:36:07.827 回答