Sharepoint中的DateTimeControl(c#)

时间:2009-06-09 21:24:19

标签: c# .net sharepoint

我正在尝试更改DateTimeControl在Sharepoint中显示的“time”下拉列表中的默认值。我希望增加15,而不是5分钟。任何人都知道如何做到这一点?我可以重载某个方法吗?

4 个答案:

答案 0 :(得分:2)

事实上,时间下拉及其初始值设定项都是作为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);            
    }
}

希望这有帮助

答案 1 :(得分:2)

转到

[12] \ TEMPLATE \ LAYOUTS \ 1033 \ BFORM.JS

排队:7690

变化:                 this.dminControl = 5; 至                 this.dminControl = 15;

可行,但所有DateTimePickers的增量都为15分钟

答案 2 :(得分:1)

不幸的是,使用开箱即用的DateTime字段是不可能的。

SharePoint字段由2个主要部分组成。数据结构(代码中)和各种视图(即列表,新/编辑/视图,管理员[添加到列表时])。开箱即用的数据结构是标准的.NET DateTime字段。不幸的是,这些观点只会增加5分钟。

您可以通过继承默认字段来创建自己的。 MSDN对如何解释得很好。 Nick Sevens有更明确的解释。

不幸的是(与大多数SharePoint自定义一样)在CAML中创建自己的字段可能很棘手。

This project on CodePlex可能是一个很好的起点。它是根据GPL许可的,因此您可以对其进行修改。

答案 3 :(得分:1)

您可以通过以下代码从C#中的SharePoint:DateTimeControl获取所选小时和分钟的值:

DateTimeControlName.SelectedDate.Hour 

&安培;

DateTimeControlName.SelectedDate.Minute. 

这些语句将以Integer格式返回小时和分钟。

我知道这篇文章很老了。但我只是认为这可能有助于有人来这篇文章。