让ASP.. NET日历按月打开

本文关键字:日历 ASP NET | 更新日期: 2023-09-27 18:04:18

我知道以前有人在网上问过这个问题,但我没有使用过ant Javascript,并且已经做了非常基本的。

基本上,当他们点击文本框旁边的(ImageButton)图标时,它将触发c#中的OnClick事件,这将使日历可见。然后,当他们选择日历上的任何内容时,它将再次触发c#的SelectionChanged,然后将在文本框中设置他们点击的日期。

HTML

<input id="txt_DateOfInterview" type="Date" class="aclass" runat="server" />
<asp:ImageButton runat="server" imageurl="~/Images/Calender.png" id="calendericonDOI" CssClass="calendericonDOI ClanderDOI" OnClick="calendericonDOI_Click" ></asp:ImageButton>
<asp:calendar runat="server" ID="ClanderDOI"  CssClass="ClanderDOI" OnSelectionChanged="ClanderDOI_SelectionChanged"  BorderColor="#6a3d98">
   <TitleStyle BackColor="Orange"/>
</asp:calendar>
c#

protected void calendericonDOI_Click(object sender, ImageClickEventArgs e)
{
     ClanderDOI.Visible = true;       
}
protected void ClanderDOI_SelectionChanged(object sender, EventArgs e)
{
     txt_DateOfInterview.Value = ClanderDOI.SelectedDate.Date.ToString("d");
     ClanderDOI.Visible = false;
}

问题:当他们点击查看下个月时,我怎样才能使日历保持可见

让ASP.. NET日历按月打开

您的示例代码可以正常工作。当你更改选定的月份时,它不会触发'SelectionChange'事件。

有一个单独的事件为月的变化(VisibleMonthChanged),你可以隐藏日历,但要实现你想要的只是确保你没有隐藏日历在你的代码的其他地方:

protected void ClanderDOI_VisibleMonthChanged(object sender, MonthChangedEventArgs e) { ClanderDOI.Visible = true; }

使用这段代码

  1. 日历将不显示在页面加载
  2. 日历将显示当你点击选择日期(btnSelectDate)按钮
  3. 选择日期后日历将消失
  4. 选择下个月时日历不会消失
protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    Calendar1.Visible = false;
  }
}
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
  Calendar1.Visible = false;
}
protected void btnSelectDate_Click(object sender, EventArgs e)
{
  Calendar1.Visible = true;
}