Исправляя календарь дозвукового 2.2, как мне получить registerClientScriptInclude для рендеринга, когда элемент управления не виден?

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

Вопрос


Мне очень понравился контроль дозвукового календаря 2.2. Это реализация .NET старого календаря Dynarch, найденной здесь.

Поэтому я сделал то, что сделал бы любой разработчик, и я пробил весь код для календаря и поместил его в свою библиотеку.

К сожалению, календарь не играет хорошо с панелью обновлений.
Я получил помощь здесь Для получения календаря работы на панели обновления, однако у меня все еще есть проблема, когда, если календарь находится в панели обновления, и он не виден в первом запросе, теги скрипта, указывающие на файлы 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 для работы, когда элемент управления не виден?

Это было полезно?

Решение

Я закончил тем, что поместил 2 -й календарь на страницу со стилем = "Дисплей: нет;" Не красивое исправление, а исправление, тем не менее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top