Как отметить предварительно выбранную дату без изменения раздела? - PullRequest
0 голосов
/ 13 октября 2011

Mine - c # веб-приложение. У меня есть элемент управления календаря по умолчанию на сегодняшний день в качестве выбранной даты. Проблема в том, что если пользователь нажимает на выбранную дату, то, поскольку нет изменение даты SelectedChanged не срабатывает. Там нет другого контроля событие, которое срабатывает либо. Как подтвердить выбор пользователя предварительно выбранная дата?

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {               
            if (ddlCityNames.SelectedIndex == 0 || ddlHotelNames.SelectedIndex == 0)
            {
                if(ddlCityNames.SelectedIndex==0)
                    Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Select City');", true);   
                else
                    Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Select Hotel');", true);
            }
           }

Это вызывается, когда пользователь меняет свой выбор. Но в случае, если он выбирает дату и вызываются эти проверки, после этого предыдущий выбор, который он сделал, остается там, но при щелчке по этому выбору ничего не происходит. Когда я выбираю другой дата и приходите снова в тот день, это работает, но как насчет ранее выбранной даты?

1 Ответ

0 голосов
/ 13 октября 2011

Глядя на ваш код, вам будет лучше, если вы перенесете логику проверки на стороне сервера на стороне клиента. По сути, вам нужно подключиться к событию blur поддержки ввода (управления календарем) и проверить выпадающие списки. Это также устранит постбэк при выборе даты.

На стороне сервера проверка должна выполняться в том месте, где будут использоваться все данные - например, кнопка Search, если вы вызываете поиск после заполнения отеля, города и даты.

РЕДАКТИРОВАТЬ :

Вот пример кода (на основе jquery), с которого следует начать. Вместо элемента управления Calender (с разметкой которого я не знаком), я предполагаю, что вы используете AJAX Toolkit Calender Extender или некоторый пользовательский интерфейс на основе java-скриптов, такой как jquery date-picker который будет моим предпочтением, кстати). С обоими этими подходами у вас есть полный контроль над вспомогательным полем ввода.

Так что с инструментарием AJAX разметка будет выглядеть примерно так:

<asp:TextBox runat="server" ID="Date1" />
<ajaxToolkit:Calendar runat="server" TargetControlID="Date1" />

Теперь в вашем файле разметки (aspx) может быть следующий скрипт:

$(document).ready(function() {
   var date = $('#<%= Date1.ClientID %>');
   var city = $('#<%= ddlCityNames.ClientID %>');
   var hotel = $('#<%= ddlHotelNames.ClientID %>');

   date.blur(function() {
     // check if date has been selected
     if (date.val() != '') {
       if (city.val() == '') { // **** put value at index zero that you use for no-selection
          alert('Select City');
       }
       else if (hotel.val() == '') {
          alert('Select Hotel');
       }
     }
   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...