我在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();
}
}
}
请帮帮我......
答案 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();
}
}