在捕获第二次点击的 ASP.Net 日历中取消选择日期

Deselecting a date in an ASP.Net Calendar catching a second click

我在 n ASP.Net 个应用程序中工作。其中 select 在日历上输入日期意味着任务已经完成,因此该记录进入 SQL 数据库。但是,有时用户会 select 错误输入日期,所以我需要给他们机会以某种方式取消 select 日期。 我认为让用户执行此操作的最自然方式是再次单击 selected 日期。 我试图通过 "SelectionChanged" 日历的事件来实现这一点,但它没有触发再次点击 selected 日期,这是有道理的,因为实际上 selected 日期并没有改变。 然后我尝试使用 "DayRender" 事件。因此,我将 SelectedDate 与 VisibleDate 进行比较,如果两个属性具有相同的日期则清除日期,否则清除 selects 日期。 它在第一次调用事件时起作用,但是当第二天必须呈现并清除日期时,事件会再次触发:D

protected void Claim_Edit_PickupDone_Calendar_DayRender(object sender, DayRenderEventArgs e)
{
  Calendar cal = (Calendar)sender;
  if (cal.SelectedDate == cal.VisibleDate)
  {
     cal.SelectedDates.Clear();
     cal.VisibleDate = DateTime.MinValue;
  }
  else
  {
     cal.VisibleDate = cal.SelectedDate;
     cal.SelectedDayStyle.BackColor = System.Drawing.Color.Goldenrod;
  }      
}

我还在模板中放置了一个复选框,但对我来说似乎不自然。 有人可以帮我抓住第二次点击吗?或者离开复选框会更好? 最好的问候。

诀窍是编写良好的逻辑而不是编写任意代码。

我更愿意编写 TextBox_TextChanged 事件来检查 TextBox 是否为空,并触发数据库调用以清除日期字段。

相反,您可以在此 topic 中使用此处实现的解决方案。