DateTimeControl в Sharepoint (c #) - PullRequest
2 голосов
/ 10 июня 2009

Я пытаюсь изменить значения по умолчанию в раскрывающемся списке «время», который DateTimeControl отображает в Sharepoint. Я хочу прирост 15, а не 5 минут. У кого-нибудь есть идеи, как это можно сделать? Могу ли я перегрузить метод или что-то еще?

Ответы [ 4 ]

2 голосов
/ 10 июня 2009

Фактически, как раскрывающийся список времени, так и его инициализаторы реализованы как частные члены данных класса DateTimeControl, поэтому вы не можете изменять значения напрямую. Однако в OnPreRender готовится выпадающий список минут, мы можем получить элемент управления и косвенно сбросить его значения, чтобы получить желаемое поведение. Вот один подход

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);            
    }
}

Надеюсь, это поможет

2 голосов
/ 02 ноября 2010

Перейти к

[12] \ ШАБЛОН \ LAYOUTS \ 1033 \ BFORM.JS

В строке: 7690

Изменение: this.dminControl = 5; в this.dminControl = 15;

Это работает, но все DateTimePickers будут иметь приращение до 15 минут

1 голос
/ 24 мая 2012

Вы можете получить значение выбранных Часа и Минуты из SharePoint:DateTimeControl в C # с помощью следующего кода:

DateTimeControlName.SelectedDate.Hour 

&

DateTimeControlName.SelectedDate.Minute. 

Эти операторы будут возвращать часы и минуты в формате Integer.

Я знаю, что этот пост довольно старый. Но я просто подумал, что это может помочь кому-то прийти на этот пост.

1 голос
/ 10 июня 2009

К сожалению, это невозможно при использовании стандартного поля DateTime.

Поле SharePoint состоит из 2 основных частей. Структура данных (в коде) и различные представления (а именно в списке, new / edit / view, admin [при добавлении в список]). Встроенная структура данных - это стандартное поле .NET DateTime. К сожалению, просмотры дают приращение только на 5 минут.

Вы можете создать свой собственный, унаследовав от поля по умолчанию. MSDN имеет достойное объяснение того, как. Ник Семерка имеет более четкое объяснение.

К сожалению (как и в большинстве настроек SharePoint) создание собственного поля в CAML может быть сложным.

Этот проект на CodePlex может быть хорошей отправной точкой. Он лицензирован по лицензии GPL, поэтому вы можете его изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...