Использование datepicker в модуле DotNetNuke-7

Я новичок в DNN. В настоящее время я создаю модуль, в котором я могу отображать статистику. Моя версия DotNetNuke - 7.0. Статистика взята из Chartjs. Для этой статистики я хотел бы реализовать фильтры. Эти фильтры должны быть выбором даты. В качестве элемента пользовательского интерфейса я добавил текстовое поле с TextMode='Date'. Но в настоящее время у меня проблемы с установкой значения по умолчанию для этого поля. Значение по умолчанию должно быть 01.01. текущего года.

Я уже пробовал установить значение через серверную часть C #. К сожалению, безуспешно. Я также попытался установить значение на стороне клиента через JavaScript. К сожалению, тоже безуспешно.

Вот несколько строк, которые я пробовал в JavaScript:

document.getElementById(<%= this.DatumVon.AccessKey %>).value = "01.01.2019";
document.getElementById(<%= this.DatumVon.AccessKey %>).innerText = "01.01.2019";
document.getElementById("DatumVon").value = "01.01.2019";

Вот несколько строк, которые я пробовал на C # в методе «Page_Load» (на стороне сервера):

this.DatumVon.Text = "01.01.2019";

Я ожидал, что значение TextBox будет 01.01.2019. Однако в настоящее время он содержит только dd.mmm.yyyy. Как я могу это изменить?

Спасибо.


person Ali    schedule 18.06.2019    source источник


Ответы (2)


Что-то не так с вашей локализацией. См. Документацию jQuery UI datepicker (раздел «Локализация»), это должно дать вам отвечать.

person Michael Tobisch    schedule 18.06.2019
comment
Извините, но почему-то я не понимаю этого ответа. Не могли бы вы прояснить это? - person Ali; 18.06.2019
comment
У вас проблема с форматом даты. dd.mmm.yyyy (обратите внимание на три m!) не является правильным форматом даты для вашего ввода и, следовательно, не соответствует заданному значению (то есть dd.mm.yyyy). С другой стороны, это (я полагаю) немецкий формат даты, который Javascript не обрабатывает по умолчанию. В документации вы найдете информацию о том, как локализовать формат даты для jQuery UI datepicker (который используется DNN). - person Michael Tobisch; 18.06.2019
comment
Извините, в моем ответе как-то потерялась ссылка - я только что поправил эту часть. - person Michael Tobisch; 18.06.2019
comment
Мммм в формате даты - это просто опечатка. Я имел ввиду мм. - person Ali; 19.06.2019
comment
Информация о том, что DNN использует jQuery datepicker, неверна после моего предположения. Возможно, текущая версия DNN использует jQuery datepicker. Но DNN 7.0 ни в коем случае нет. DNN 7.0 использует тег ввода HTML с type = 'date' в случае TextBox с TextMode = 'Date'. Но сейчас я попробовал использовать jQuery datepicker. Это тоже неплохо работает. НО любые таблицы стилей портят весь datepicker, поэтому datepicker совершенно уродлив. Что я должен делать? Я в отчаянии ... Почти неделю меня раздражала только эта датапикер. - person Ali; 19.06.2019
comment
Я также попытался включить несколько готовых скинов css для jQuery datepicker. Однако какой-то вышестоящий файл DNN css, похоже, перезаписывает скин datepicker. - person Ali; 19.06.2019
comment
У вас есть какие-нибудь решения? Как тогда в DNN 7.0 были реализованы датпикеры? Было ли что-нибудь подобное во времена DNN 7.0? У меня такое ощущение, что DNN 7.0 не предлагает никаких функций для datepicker. Или деревья DOM, созданные DNN 7.0, больше не совместимы с текущими браузерами. - person Ali; 19.06.2019
comment
Раньше использовался DatePicker Telerik, но я не рекомендую его использовать, так как он отключен и может вызвать проблемы с обновлением. У меня есть несколько мест, где я использовал jQuery UI datepicker, и это тоже меня бесило. Пожалуйста, дайте мне немного времени, чтобы найти пример, извините, у меня сейчас нет времени, чтобы написать полный ответ. Это был скорее указатель в правильном направлении. - person Michael Tobisch; 20.06.2019

вау ... Я решил это. Я сделал это. Иногда решение находится прямо перед вами, и вы его не видите. Майкл Тобиш был абсолютно прав. При установке значения очень важен формат. Я всегда использовал немецкий формат. Текстовое поле DNN с TextMode="Date" не справится с этим. DNN преобразует этот TextBox в поле ввода HTML. Но это поле ввода может быть очищено только в формате "yyyy-mm-dd". В зависимости от географического положения клиента (по крайней мере, я так думаю) текст, отображаемый в поле ввода, будет отформатирован. Но значение поля ввода всегда имеет один и тот же формат ("yyyy-mm-dd"). Это очень важно: отображаемый текст и фактическое значение имеют разные форматы.

Еще раз большое спасибо Майклу Тобишу за душевное вдохновение и терпение ко мне.

Также важно то, что доступ к фактическому идентификатору элемента DNN работает следующим образом: this.Element.ClientID, а не так, как я предполагал до this.Element.AccessKey. Это тоже было глючно.

person Ali    schedule 21.06.2019
comment
Али, я рад, что смог помочь ... И извините, я полностью упустил из виду указанное выше свойство .AccessKey, которое, конечно, ДОЛЖНО быть .ClientID. - person Michael Tobisch; 24.06.2019