Как отключить предыдущую дату в Calender Extender, используя любой клиентский скрипт или серверный скрипт - PullRequest
2 голосов
/ 11 декабря 2010

У меня есть два текстовых поля с calendarextender и One Label. Первое текстовое поле представляет дату начала, а второе текстовое поле представляет дату окончания, Метка представляет количество оставшихся дней.

У меня проблема в том, что если я выбираю дату окончания, я хочу отключить все даты, предшествующие дате начала, используя любой из сценариев на стороне клиента или сценария на стороне сервера ....... Но вычислите даты начала и окончания и сохраните их в (метке) NO.OF дней, оставьте для этого мне нужен только сценарий на стороне сервера.

Пример. Дата начала - 11-12-2010, а дата окончания - 14-12-2010, количество выходных дней - 4.

Может кто-нибудь, пожалуйста, помогите мне ...... Я новичок в Asp.net ........

1 Ответ

0 голосов
/ 11 декабря 2010

На самом деле я никогда не использовал расширение календаря Ajax, но кое-что прочитал, так что вот пример:

Выполнение логики ограничения дат на стороне сервера, вероятно, будет самым простым. Но насколько мне известно, CalendarExtender не допускает событий на стороне сервера. Но для решения этой проблемы добавьте на страницу скрытую кнопку asp: и скрытое поле и используйте событие OnClientDateSelectionChanged для первого CalendarExtender, чтобы сохранить дату и подделать щелчок по кнопке, вызывающей метод code-behind. *

function dateClickEvent(sender, args)  
{    
    document.getElementById('MyHiddenField').value = sender.get_selectedDate();  
   (document.getElementById('HiddenDateBtn')).click();     
} 

Разметка для кнопки и поля выглядит примерно так:

    <asp:HiddenField ID="MyHiddenField" runat="server" />    
    <asp:Button ID="HiddenDateBtn" runat="server" Text="Click" Visible="false" 
style="display:none" OnClick="HiddenDateBtn_Click" /> 

Если вы затем используете RangeValidator и ValidatorCalloutExtender, вы можете установить диапазон для второго расширителя даты в коде позади.

//In your code-behind  
protected void HiddenDateBtn_Click(object sender, EventArgs e)  
{  
     string firstDate = MyHiddenField.Value;  
     SecondDateRangeValidator.MinimumValue = firstDate;
}

И код ASPX для валидатора должен выглядеть примерно так:

<asp:RangeValidator ID="SecondDateRangeValidator" runat="server"
                ControlToValidate="SecondDateTextBox" ErrorMessage="RangeValidator"
                Type="Date">
</asp:RangeValidator>
<ajaxToolkit:ValidatorCalloutExtender ID="SecondDateRangeValidator_ValidatorCalloutExtender"
                runat="server" Enabled="True" TargetControlID="SecondDateRangeValidator">
</ajaxToolkit:ValidatorCalloutExtender>

Я сам не пробовал этот код :) Просто соберите его после некоторого поиска и чтения. Надеюсь, это поможет.

...