Я пытаюсь изменить значения по умолчанию в раскрывающемся списке "время", который отображает DateTimeControl в Sharepoint. Я хочу прирост в 15, а не 5 минут. Кто-нибудь знает, как это можно сделать? Могу ли я перегрузить метод или что-то еще?
Перейдите к
[12]\TEMPLATE\РАСКЛАДКИ\1033\BFORM.JS
В строке: 7690
Изменить: this.dminControl = 5; в this.dminControl = 15;
Он работает, но все DateTimePickers будут иметь прирост до 15 минут
По сути, как время, так и его инициализаторы реализованы как частные члены данных класса DateTimeControl, поэтому вы не можете напрямую изменять значения. Тем не менее, минутный снимок подготовлен внутри OnPreRender, мы можем косвенно получить контроль и reset его значения, чтобы получить желаемое поведение. Вот один из подходов
public class MyDateTimeControl : DateTimeControl
{
protected override void Render(HtmlTextWriter output)
{
DropDownList minuteControl = null;
string[] newMinutesRange = new string[] { "00", "15", "30", "45" };
string[] newMinutesRangeExt = new string[] { "00", "15", "30", "45", "" };
int index = 0;
int selectedMinutes;
try
{
if (!this.DateOnly && this.Controls.Count == 4)
{
minuteControl = (DropDownList)this.Controls[2];
}
}
catch { }
if (minuteControl != null && !this.DateOnly)
{
selectedMinutes = Convert.ToInt32(minuteControl.SelectedValue);
if (selectedMinutes % 15 > 0)
{
index = 4;
newMinutesRangeExt.SetValue(selectedMinutes.ToString(), index);
newMinutesRange = newMinutesRangeExt;
}
else
{
index = selectedMinutes / 15;
}
minuteControl.Items.Clear();
minuteControl.SelectedIndex = 0;
minuteControl.DataSource = newMinutesRange;
minuteControl.DataBind();
minuteControl.SelectedIndex = index;
}
base.Render(output);
}
}
Надеюсь, что это поможет
Вы можете получить значение выбранного Часа и Минуты из SharePoint:DateTimeControl
в С# с помощью следующего кода:
DateTimeControlName.SelectedDate.Hour
&
DateTimeControlName.SelectedDate.Minute.
Эти инструкции возвращают час и минуту в формате Integer
.
Я знаю, что этот пост довольно старый. Но я просто подумал, что это может помочь кому-то прийти на этот пост.
К сожалению, это невозможно с использованием поля даты Datetime.
Поле SharePoint состоит из двух основных частей. Структура данных (в коде) и различные представления (а именно в списке, new/edit/view, admin [при добавлении в список]). Структура данных из коробки является стандартным полем .NET DateTime. К сожалению, представления дают только прирост на 5 минут.
Вы можете создать свой собственный, наследуя от поля по умолчанию. MSDN имеет достойное объяснение того, как. Ник Севенс имеет более четкое объяснение.
К сожалению (как и в большинстве настроек SharePoint) создание собственного поля в CAML может быть сложным.
Этот проект в CodePlex может быть хорошей отправной точкой. Он лицензирован под GPL, поэтому вы можете его изменить.