Subsonic 2.2カレンダーを修正すると、Controlが表示されていない場合にレジスタクライアントスクリプトの呼び出しをレンダリングするにはどうすればよいですか?

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

質問


私は亜音速2.2カレンダーコントロールが本当に好きでした。それは見つかった古いダイナルヒのカレンダーの.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 + "."; } }

それで、私の質問は、コントロールが見えないときに登録clientscriptIncludeの呼び出しを取得するにはどうすればよいですか?

役に立ちましたか?

解決

スタイル= "display:none;"を使用して、ページに2番目のカレンダーを置くことになりました。きれいな修正ではありませんが、それでもなお修正です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top