Fixation du SubSonic 2.2 Calendrier, Comment puis-je obtenir des appels RegisterClientScriptInclude rendre lorsque le contrôle est pas visible?

StackOverflow https://stackoverflow.com/questions/3925466

Question


J'ai vraiment aimé le SubSonic 2.2 contrôle du calendrier. Il est une implémentation .Net de l'ancien calendrier Dynarch trouvé .

Je l'ai fait ce que tout développeur ferait et je chipé tout le code pour le calendrier et le mettre dans sa propre bibliothèque.

Malheureusement, le calendrier ne joue pas bien avec un panneau de mise à jour.
Je suis aide pour obtenir le calendrier de travail dans un panneau de mise à jour mais il me reste un problème où si le calendrier est dans un panneau de mise à jour et il est pas visible sur la première demande, les balises de script pointant vers les fichiers JavaScript ne rendent pas.

Voici le code qui fait cela.

    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 + "."; } }

Alors, ma question est, comment puis-je reçois des appels RegisterClientScriptInclude au travail lorsque le contrôle est pas visible?

Était-ce utile?

La solution

J'ai fini par mettre un 2ème calendrier sur la page avec style = « display: none; » pas une jolie solution, mais une solution pas moins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top