1

我在我的 Visual Web 部件中使用 SharePoint DateTimeControl。在这里,我正在检查选择的日期不应该是未来的日期,为此我使用 ScriptManager.RegisterStartupScript 来显示该警报消息,如果用户输入了未来的日期。这些活动在 OnDateChanged 事件下处理。当我显示警报消息并使用 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();
            }
        }
    }

请帮我解决这个问题......

4

1 回答 1

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();
         }
    }
于 2013-04-04T14:42:24.623 回答