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

最佳答案

实际上,时间下拉列表及其初始化程序都是作为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);
    }
}


希望这可以帮助

关于c# - Sharepoint中的DateTimeControl(C#),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/972588/

10-10 23:44