JavascriptからCalendarBehaviorをポップアップする
-
08-07-2019 - |
質問
実際にサーバー側のコントロール( 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, ...
所属していません StackOverflow