sharepoint datetime控件ClearSelection方法在OnDateChanged事件中不起作用

时间:2013-04-03 07:34:48

标签: sharepoint-2010

我在Visual Web部件中使用SharePoint DateTimeControl。在这里,我检查所选日期不应该是将来的日期,因为我已经使用ScriptManager.RegisterStartupScript显示该警报消息,如果用户输入了将来的日期。这些活动在OnDateChanged Event下处理。当我显示警报消息并使用ClearSelection()方法从DateTimecontrol清除所选日期时,它不会清除该值。下面我粘贴了我的代码。

在设计方面:

<SharePoint:DateTimeControl ID="dtManagerJoiningDate" runat="server" AutoPostBack="true"
                    DateOnly="true" OnDateChanged="dtManagerJoiningDate_OnDateChanged" />

代码背后:

 protected void dtManagerJoiningDate_OnDateChanged(object sender, EventArgs e)
    {
        if (dtManagerJoiningDate.IsValid)
        {
            if (dtManagerJoiningDate.SelectedDate > todayDate)
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Invalid Date", "alert('Joining Date should be past Date');", true);
                dtManagerJoiningDate.ClearSelection();
            }
        }
    }

请帮帮我......

1 个答案:

答案 0 :(得分:1)

我能够使用更新面板和脚本管理器复制该问题。

我无法告诉你为什么,但我通过将clearSelection代码放在​​ OnPreRender

中来实现这一点
bool _clearSelection = false
protected void dtManagerJoiningDate_OnDateChanged(object sender, EventArgs e)
{
    if (dtManagerJoiningDate.IsValid)
    {
        if (dtManagerJoiningDate.SelectedDate > todayDate)
        {
           _clearSelection = true;
        }
    }
 }

    protected override void OnPreRender(EventArgs e)
    {
        //see if it clear selection is set
        if(_clearSelection)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Invalid Date",           "alert('Joining Date should be past Date');", true);
            dtManagerJoiningDate.ClearSelection();
         }
    }