Я создаю серверный элемент управления с именем DateTimePicker.В этом у меня есть свойство, которое получает / устанавливает формат времени.Я пытался сохранить формат времени в скрытом поле ввода.
public class DateTimePicker : WebControl, INamingContainer
{
private TextBox _dateTextBox;
private TextBox _timeTextBox;
private HtmlInputHidden _timeFormat;
...
public string TimeFormat
{
get
{
string timeFormat = _timeFormat.Value;
if(string.IsNullOrEmpty(timeFormat))
{
timeFormat = DEFAULT_TIME_FORMAT;
}
return timeFormat;
}
set
{
_timeFormat.Value = value;
}
}
...
protected override void CreateChildControls()
{
Controls.Clear();
_dateTextBox = new TextBox();
_dateTextBox.ID = "DateTextBox";
_dateTextBox.CssClass = "DatePickerInput";
_timeTextBox = new TextBox();
_timeTextBox.ID = "TimeTextBox";
_timeTextBox.CssClass = "TimePickerInput";
_timeTextBox.Width = Unit.Pixel(70);
_timeFormat = new HtmlInputHidden();
_timeFormat.ID = "TimeFormatInput";
Controls.Add(_dateTextBox);
Controls.Add(_timeTextBox);
Controls.Add(_timeFormat);
}
...
Текстовое поле, содержащее время, расширяется с помощью палитры времени JQuery, например:
$('.TimePickerInput').timePicker({
step: 60,
timeFormat: GetTimeFormat()
});
function GetTimeFormat() {
var timeFormat = $('#TimeFormatInput').val(); //This does not work
return timeFormat;
//return 'hh:mm:ss tt'; //This works
};
Сеттери getter для серверного элемента управления работает, но в селекторе для HtmlInputHidden-field не работает.Как правильно настроить этот селектор?
Редактировать (вот сгенерированный html):
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWCgLwj7S1AQLalbH6BQKys6HCBwLLy8GzCQKVnffiAgKC8LSoDgKTgNnOAQKM54rGBgK5ttWBDwLR0LuADBg3bjYl8jVMd+TqBkYL8mvSQmAH" />
</div>
<div>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager1', document.getElementById('form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tUpdatePanel1'], [], [], 90);
//]]>
</script>
<div id="UpdatePanel1">
<span id="LoadTimer" style="visibility:hidden;display:none;"></span>
<span id="FromDateTime"><input name="FromDateTime$DateTextBox" type="text" id="FromDateTime_DateTextBox" class="DatePickerInput" /><input name="FromDateTime$TimeTextBox" type="text" id="FromDateTime_TimeTextBox" class="TimePickerInput" style="width:70px;" /><input name="FromDateTime$TimeFormatInput" type="hidden" id="FromDateTime_TimeFormatInput" /></span>
<br />
<br />
<span id="ToDateTime"><input name="ToDateTime$DateTextBox" type="text" id="ToDateTime_DateTextBox" class="DatePickerInput" /><input name="ToDateTime$TimeTextBox" type="text" id="ToDateTime_TimeTextBox" class="TimePickerInput" style="width:70px;" /><input name="ToDateTime$TimeFormatInput" type="hidden" id="ToDateTime_TimeFormatInput" /></span>
<br />
<br />
<input type="submit" name="Button1" value="Postback" id="Button1" />
<br />
<br />
<input type="submit" name="GetDateTimeButton" value="Get Selected DateTime" id="GetDateTimeButton" />
<input name="SelectedDateTimeTextBox" type="text" id="SelectedDateTimeTextBox" />
</div>
</div>
После просмотра исходного кода я протестировал использование var timeFormat = $ ('#FromDateTime_TimeFormatInput ') Val ().Это работает, но часть FromDateTime _ добавляется из идентификатора, используемого для серверного элемента управления.Я должен найти способ получить это, не зная этого.Если на странице более одного поля 'TimeFormatInput', не имеет значения, какое из них я прочитаю, оно будет иметь одинаковое содержимое.