保持ASP.NET日历在月份打开单击

时间:2014-05-21 09:57:46

标签: c# html css asp.net

我知道之前人们已经通过互联网问过这个问题,但是我还没有使用过ant Javascript并且已经完成了非常基本的工作。

基本上,当他们单击文本框旁边的(ImageButton)图标时,它将在C#中触发OnClick事件,这将使日历可见。然后,当他们在该日历上选择任何内容时,它将触发c#agian上的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;
}

问题:如果日历仅在下个月点击查看,我怎样才能使日历保持可见。

2 个答案:

答案 0 :(得分:1)

您的示例代码按预期工作。当您更改所选月份时,它不会触发“SelectionChange”事件。

月份更改(VisibleMonthChanged)有单独的事件,您可以在其中隐藏日历,但要实现您想要的目标,请确保不要在代码中的其他位置隐藏日历:

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

答案 1 :(得分:1)

使用此代码

  1. 日历不会显示在页面加载
  2. 日历将显示何时单击SelectDate(btnSelectDate)按钮
  3. 日期将在选择日期后消失
  4. 日历不会在下个月选择中消失
  5. 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;
    }