Всплывающее календарь Поведение от Javascript - PullRequest
2 голосов
/ 17 сентября 2009

Как я могу встроить все скрипты, необходимые для CalendarBehavior в страницу, без использования серверного элемента управления ( CalendarExtender ). Причина, по которой я не могу использовать расширитель на стороне сервера, заключается в том, что у меня есть страница с сотнями элементов управления Date; Я хочу иметь возможность лениво загружать календари по мере необходимости (когда пользователь нажимает на элемент управления).

Код, который создает календарь из JavaScript, следующий:

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

Проблема в том, что без включения всех необходимых js из AjaxControlToolkit ресурсов будет выдано сообщение об ошибке:

AjaxControlToolkit is undefined.

Большое спасибо,

Флорин С.

Ответы [ 2 ]

1 голос
/ 29 сентября 2009

Я нашел следующий хак, который регистрирует все скрипты и ссылки на css, предоставляемые CalendarExtender . Я думаю, что решение является универсальным, поэтому его можно использовать с другими расширителями:

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.

0 голосов
/ 23 сентября 2018

У меня была такая же проблема. Я обнаружил, что в javascript-land вместо AjaxControlToolkit следует использовать Sys.Extended.UI Итак, вместо:

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

вы делаете это:

cal = $create(Sys.Extended.UI.CalendarBehavior, ...
...