繁体   English   中英

修复了SubSonic 2.2日历,当控件不可见时,如何获取RegisterClientScriptInclude调用以进行渲染?

[英]Fixing the SubSonic 2.2 Calendar, How do I get RegisterClientScriptInclude calls to render when control is not visible?


我真的很喜欢SubSonic 2.2日历控件。 它是在此处找到的旧Dynarch日历的.Net实现。

因此,我做了所有开发人员都会做的事情,然后刷了日历的所有代码并将其放在自己的库中。

不幸的是,日历无法与更新面板配合使用。
我在这里获得了有关使日历在更新面板中工作的帮助,但是仍然存在一个问题,如果日历在更新面板中并且在第一个请求中不可见,则指向JavaScript文件的脚本标记不会呈现。

这是执行此操作的代码。

    protected override void OnPreRender(EventArgs e)
    {
        string csslink = "<link href='" + Page.ClientScript.GetWebResourceUrl(GetType(), IncludeAssemblyPrefix + "skin.theme.css") + "' rel='stylesheet' type='text/css' />";
        Page.Header.Controls.Add(new LiteralControl(csslink));
        Page.ClientScript.RegisterClientScriptInclude("CalendarMain", Page.ClientScript.GetWebResourceUrl(GetType(), IncludeAssemblyPrefix + "calendar.js"));
        Page.ClientScript.RegisterClientScriptInclude("CalendarSetup", Page.ClientScript.GetWebResourceUrl(GetType(), IncludeAssemblyPrefix + "calendar-setup.js"));

        string langPrefix = IncludeAssemblyPrefix + "lang.calendar-";

        if (String.IsNullOrEmpty(Language))
            Language = DEFAULT_LANGUAGE;

        if (Assembly.GetExecutingAssembly().GetManifestResourceStream(langPrefix + Language + ".js") == null)
            Page.ClientScript.RegisterClientScriptInclude("CalendarLanguage", Page.ClientScript.GetWebResourceUrl(GetType(), langPrefix + DEFAULT_LANGUAGE + ".js"));
        else
            Page.ClientScript.RegisterClientScriptInclude("CalendarLanguage", Page.ClientScript.GetWebResourceUrl(GetType(), langPrefix + Language + ".js"));

        base.OnPreRender(e);
    }
    public string IncludeAssemblyPrefix { get { return Assembly.GetExecutingAssembly().GetName().Name + "."; } }

所以我的问题是,当控件不可见时,如何使RegisterClientScriptInclude调用起作用?

我最终在页面上放置了第二个样式为style =“ display:none;”的日历。 不是一个很好的解决方法,但仍然是修复方法。

暂无
暂无

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

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