2012-06-18 83 views
2

我正在使用ajax日曆擴展程序的'From date'和'To date'文本框,我必須禁用至日期以前的日期或小於選定的'From date'的日期。我可以使用range validation看到很多帖子。我如何禁用沒有任何消息給用戶的日期?Ajax日曆擴展程序結束日期

+0

你能說清楚嗎,請舉例...我可以幫你ü – Zoya

+0

我有一個來自於日期文本文本盒子,我使用.net 2.0和ajax日曆擴展。我想在日期之前禁用所有日期。 – Sibiraj

+0

我已經在下面的回答我的問題檢查或去http://stackoverflow.com/a/11201843/1445836 – Zoya

回答

0

首先添加的.dll - RJS.Web.WebControl.PopCalendar.Net.2008.dll

然後添加源代碼:

<asp:TextBox ID="DepartureDate" runat="server"></asp:TextBox> 
&nbsp;&nbsp;&nbsp; 
     <rjs:PopCalendar ID="PopCalendar1" runat="server" Control="DepartureDate" 
      Format="mm dd yyyy" 
      InvalidDateMessage="The date value entered is invalid." RequiredDate="True" 
      RequiredDateMessage="You must enter a date value." From-Date="" SelectWeekend="True" 

      /> 
    <br /> 
    <br /> 
    <br /> 
    <asp:TextBox ID="ReturnDate" runat="server"></asp:TextBox> 
&nbsp;&nbsp;&nbsp;&nbsp; 
    <rjs:PopCalendar ID="myReturnCal" runat="server" Control="ReturnDate" 
      Format="mm dd yyyy" 
      InvalidDateMessage="The date value entered is invalid." RequiredDate="True" 
      RequiredDateMessage="You must enter a date value." 
      From-Control="DepartureDate" From-Date="" From-Increment="1" 
      /> 
    <br /> 
     <asp:Label ID="Results" runat="server"></asp:Label> 
     <rjs:PopCalendarMessageContainer ID="PopCalMessagesForDeparture" runat="server" 
      Calendar="myDepartureCal" /> 
     <rjs:PopCalendarMessageContainer ID="PopCalMessagesForReturn" runat="server" 
      Calendar="myReturnCal" /> 
0

您可以使用asp:CustomValidator。在OnServerValidate="ServerValidate"方法,你可以寫這種代碼(代碼隱藏文件):

protected void ServerValidate(object source, ServerValidateEventArgs value) 
{ 
     DateTime dtStart = DateTime.ParseExact(txtStartDate.Text.Trim(), "yyyyMMdd", culture.DateTimeFormat); 
     DateTime dtEnd = DateTime.ParseExact(txtEndDate.Text.Trim(), "yyyyMMdd", culture.DateTimeFormat); 

     if (dtStart > dtEnd) 
     { 
      value.IsValid = false; 
      txtEndDate.Text = string.Empty 
     } 
} 
+0

但我只是希望該用戶不能只選擇較txtstart中選擇的日期,要禁用較少的日期..謝謝 – Zoya

+0

好。參考這些鏈接http://forums.asp.net/t/1319318.aspx http://forums.asp.net/t/1230073.aspx http://forums.asp.net/p /1161833/2149277.aspx#2149277 –

+0

該鏈接是一個asp.net日曆控件,而不是一個ajax擴展器 – Sibiraj

0

您可以使用更新面板採用了隱藏式觸發按鍵設置第二個文本框的日曆擴展的「結束日期」的屬性:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
      <asp:TextBox ID="txtStart" runat="server"></asp:TextBox> 
      <ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtStart" OnClientDateSelectionChanged="dateSelectionChanged"> 
      </ajaxToolkit:CalendarExtender> 
      <br /><br /> 
      <asp:TextBox ID="txtEnd" runat="server"></asp:TextBox> 
      <ajaxToolkit:CalendarExtender ID="CalendarExtender2" runat="server" TargetControlID="txtEnd"> 
      </ajaxToolkit:CalendarExtender> 

      <script type="text/javascript"> 
       function dateSelectionChanged(sender, args) { 
        __doPostBack('<%=btnReload.ClientID %>', null); 
       } 
      </script> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    <asp:Button ID="btnReload" runat="server" style="display:none;" /> 

在上面的代碼中,當用戶對第一日曆擴展器的選擇時,「dateSelectionChanged」函數被調用以執行局部回傳。此時,您可以設置第二個日曆擴展的結束日期屬性:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Page.IsPostBack Then 
     CalendarExtender2.EndDate = txtStart.Text 
    End If 
End Sub 
+0

AjaxToolkit for .net 2.0具有結束日期?我知道這將工作在2.0以上。但我的問題與.net 2.0相關。 – Sibiraj

+0

是的,我的答案是針對版本4.我認爲這種方式是相同的 - 如果您使用RJS.Web.WebControl.PopCalendar來實現所需的結果或更新您的Ajax Control Toolkit。更好的是更新工具包? – Zishan

+0

但是我們的應用程序服務器是.net 2.0 – Sibiraj

0

試試這個:

<html> 
<head> 
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"> </script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

<script> 
    $().ready(function() { 
     $('.dDate, .rDate').datepicker({ 
      showOn: 'both', 
      buttonImage: "<?=$http?>layout_images/calendar.gif", 
      buttonImageOnly: true, 
      beforeShow: customRange, 
      buttonText: 'Open Calendar', 
      firstDay: 1, 
      dateFormat: 'D d M yy', 
      onSelect: function (date) { 
       date = $(this).datepicker('getDate'); 
       $('#returningdate').val($.datepicker.formatDate('D d M yy', date)); 
      } 
     }); 
    }); 

    function customRange(a) { 
     var b = new Date(); 
     var c = new Date(b.getFullYear(), b.getMonth(), b.getDate()); 
     if (a.id == 'returningdate') { 
      if ($('.dDate').datepicker('getDate') != null) { 
       c = $('.dDate').datepicker('getDate'); 
      } 
     } 
     return { 
      minDate: c 
     } 
    } 
    </script> 
    </head> 
    <body > 

    <div style="font-size:11px;"> 
    Depart Date: <input type="text" id="departingdate" class="dDate"><br> 
    Return Date: <input type="text" id="returningdate" class="rDate"> 
    </div> 

    </body> 
</html> 
+0

您只是在代碼中傾倒所有答案。一個好的答案_解決方案。 –

相關問題