2017-10-20 162 views
1

我有两个日期选取器是这样的:Conflic日历之间

enter image description here

HTML:

 <asp:TextBox ID="fecha_ini" ClientIDMode="Static" runat="server"></asp:TextBox> 
     <asp:Calendar ID="Calendar2" runat="server" OnSelectionChanged="DateChange" DayNameFormat="FirstLetter" Font-Names="Tahoma" Font-Size="11px" NextMonthText="." PrevMonthText="." SelectMonthText="»" SelectWeekText="›" CssClass="myCalendar" CellPadding="0"> 
      <OtherMonthDayStyle ForeColor="#b0b0b0" /> 
      <DayStyle CssClass="myCalendarDay" ForeColor="#2d3338" /> 
      <DayHeaderStyle CssClass="myCalendarDayHeader" ForeColor="#2d3338" /> 
      <SelectedDayStyle Font-Bold="True" Font-Size="12px" CssClass="myCalendarSelector" /> 
      <TodayDayStyle CssClass="myCalendarToday" /> 
      <SelectorStyle CssClass="myCalendarSelector" /> 
      <NextPrevStyle CssClass="myCalendarNextPrev" /> 
      <TitleStyle CssClass="myCalendarTitle" /> 
     </asp:Calendar> 
    </td> 
<td> 
       <asp:TextBox ID="fecha_fin" ClientIDMode="Static" runat="server"></asp:TextBox> 
       <asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="DateChange" DayNameFormat="FirstLetter" Font-Names="Tahoma" Font-Size="11px" NextMonthText="." PrevMonthText="." SelectMonthText="»" SelectWeekText="›" CssClass="myCalendar" CellPadding="0"> 
        <OtherMonthDayStyle ForeColor="#b0b0b0" /> 
        <DayStyle CssClass="myCalendarDay" ForeColor="#2d3338" /> 
        <DayHeaderStyle CssClass="myCalendarDayHeader" ForeColor="#2d3338" /> 
        <SelectedDayStyle Font-Bold="True" Font-Size="12px" CssClass="myCalendarSelector" /> 
        <TodayDayStyle CssClass="myCalendarToday" /> 
        <SelectorStyle CssClass="myCalendarSelector" /> 
        <NextPrevStyle CssClass="myCalendarNextPrev" /> 
        <TitleStyle CssClass="myCalendarTitle" /> 
       </asp:Calendar> 

      </td> 

.CS控制器

protected void Page_Load(object sender, EventArgs e) 
    { 
fecha_ini.Text = DateTime.Today.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 
fecha_fin.Text = DateTime.Today.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 
        Thread.CurrentThread.CurrentCulture = new CultureInfo("es-MX"); 
    } 

protected void DateChange(object sender, EventArgs e) 
     { 
      fecha_fin.Text = Calendar1.SelectedDate.ToString("dd/MM/yyyy"); 
      fecha_ini.Text = Calendar2.SelectedDate.ToString("dd/MM/yyyy"); 

     } 

问题是当我在第二个日历中选择日期时,它正确更改它,但将第一个日历日期刷新回今天,我该如何解决?问候

回答

1

您需要将文本框的初始设置包装在IsPostBack检查中。如果不是,每次有回传时都会重置。

protected void Page_Load(object sender, EventArgs e) 
{ 
    Thread.CurrentThread.CurrentCulture = new CultureInfo("es-MX"); 

    if (!IsPostBack) 
    { 
     fecha_ini.Text = DateTime.Today.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 
     fecha_fin.Text = DateTime.Today.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 
    } 
} 
0

当页面回发时,您的页面加载事件正在触发。尝试将您的语句包装在if语句中,以便它仅在页面加载时执行。

if (!IsPostBack) 
    { 
     fecha_fin.Text = Calendar1.SelectedDate.ToString("dd/MM/yyyy"); 
     fecha_ini.Text = Calendar2.SelectedDate.ToString("dd/MM/yyyy"); 

    }