【问题标题】:Deselecting a date in an ASP.Net Calendar catching a second click在 ASP.Net 日历中取消选择第二次单击的日期
【发布时间】:2016-01-09 05:11:36
【问题描述】:

我正在使用 ASP.Net 应用程序。在日历上选择日期意味着任务已完成,因此该记录将进入 SQL 数据库。但是,有时用户会错误地选择日期,所以我需要让他们有机会以某种方式取消选择日期。 我认为让用户这样做最自然的方法是在选定的日期再次点击。 我试图通过“SelectionChanged”日历的事件来实现这一点,但它没有触发再次点击选定的日期,这是有道理的,因为实际上选定的日期没有改变。 然后我尝试使用“DayRender”事件。因此,我将 SelectedDate 与 VisibleDate 进行比较,如果两个属性具有相同的日期,则清除日期,否则选择日期。 它在第一次调用事件时起作用,但是当第二天必须渲染并清除日期时再次触发事件: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 事件?让用户清空所选日期的文本框并向 db 发送指令以清除该字段
  • @techspider。嘿,谢谢你分享你的想法。这听起来一点也不坏。让我看看情况如何,我会回复你的。

标签: asp.net calendar


【解决方案1】:

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

我更喜欢编写 TextBox_TextChanged 事件来检查 TextBox 是否为空,并触发 DB 调用以清除 Date 字段。

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

【讨论】:

  • 关于您提供的主题,按钮触发逻辑,这与我对复选框所做的差不多。而且我仍在考虑留下文本框的想法,因为它会导致控制用户输入内容的噩梦。我必须在周末考虑一下,但非常感谢你分享想法。 :)
  • 我将您的解决方案保留在按钮清除所选日期的位置。它比复选框更清晰,因为它只需要一行代码,这使得它更容易维护。我在几分钟内再次编写了代码。非常感谢。
  • 完全正确;这就是我的意思:) 没问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 2020-01-22
  • 2016-12-10
相关资源
最近更新 更多