質問

実際にサーバー側のコントロール( CalendarExtender )を使用せずに、 CalendarBehavior に必要なすべてのスクリプトをページに埋め込むにはどうすればよいですか。サーバーサイドエクステンダーを使用できない理由は、おそらく何百もの日付コントロールを備えたページがあるからです。必要に応じてカレンダーを遅延ロードできるようにしたい(ユーザーがコントロールをクリックしたとき)。

javascriptからカレンダーを作成するコードは次のとおりです。

cal = $create(AjaxControlToolkit.CalendarBehavior,
  { 'id': owner.id + '_calendar', 'cssClass': 'calExt', 'format': format }, 
  null, null, owner);

問題は、 AjaxControlToolkit リソースから必要なすべてのjsを含めることなく、エラーをスローすることです:

AjaxControlToolkit is undefined.

どうもありがとう、

フローリンS。

役に立ちましたか?

解決

CalendarExtender によって公開されるすべてのスクリプトとcss参照を登録する次のハックを見つけました。他のエクステンダーで使用できるように、ソリューションは汎用的だと思います:

ScriptManager manager = ScriptManager.GetCurrent(Page);
if (manager != null)
{
  foreach (ScriptReference reference in ScriptObjectBuilder.GetScriptReferences(typeof(CalendarExtender)))
  {
    manager.Scripts.Add(reference);
  }
  CalendarExtender extender = new CalendarExtender();
  Page.Form.Controls.Add(extender);
  ScriptObjectBuilder.RegisterCssReferences(extender);
  Page.Form.Controls.Remove(extender);
}

RegisterCssReferences 呼び出しには一時的なエクステンダーインスタンスが必要です。そうでない場合、エラーがスローされます。

動作しますが、YMMV。

他のヒント

同じ問題がありました。 javascript-landでは、 AjaxControlToolkit の代わりに Sys.Extended.UI を使用する必要があることがわかりました。 したがって、代わりに:

cal = $create(AjaxControlToolkit.CalendarBehavior, ...

これを行います:

cal = $create(Sys.Extended.UI.CalendarBehavior, ...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top