Как обновить метку при изменении выпадающего списка

#c# #asp.net

#c# #asp.net

Вопрос:

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

Ответ №1:

Вы могли бы написать функцию javascript для обновления вашей метки и вызвать ее из свойства onchange вашего выпадающего списка.

Комментарии:

1. выдает ошибку. в локальной системе не найдена выбранная зона

2. какой javascript вы используете?

Ответ №2:

Используйте Ajax или javascript на стороне клиента, чтобы определить, когда выпадающий список выбран. Если вы используете javascript, убедитесь, что это поведение также работает, когда javascript выключен. Т.Е. отправьте страницу и обновите метку на стороне сервера.

Ответ №3:

Для перезагрузки метки вы должны установить автоматическую отправку в выпадающем списке. Таким образом, вы можете использовать на странице загрузки TimeZoneInfo.

Вот пример, найденный в MSDN :

     // Get Tokyo Standard Time zone
        TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
        DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);
        Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(tstTime) ?
                          tst.DaylightName : tst.StandardName, tstTime);
        Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
  

Прежде всего, вы должны найти часовой пояс по идентификатору. Вы можете получить весь идентификатор, используя этот метод :

   System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> TimeZoneColl  = TimeZoneInfo.GetSystemTimeZones();
  

Затем в цикле foreach вы можете получить идентификатор и привязку к значениям выпадающего списка.

В конце концов, вам нужно только параметризовать пример следующим образом :

 TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById(*dropdownlistselectedvalue*);
DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);
Label1.Text = tstTime;
  

Вот как вы можете привязать свой выпадающий список :

   System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> TimeZoneColl = TimeZoneInfo.GetSystemTimeZones();
        ddlTimeZones.DataSource = TimeZoneColl;
        ddlTimeZones.DataTextField = "StandardName";
        ddlTimeZones.DataValueField = "Id";
        ddlTimeZones.DataBind();
  

Это рабочий пример :

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> TimeZoneColl = TimeZoneInfo.GetSystemTimeZones();
            ddlTimeZones.DataSource = TimeZoneColl;
            ddlTimeZones.DataTextField = "StandardName";
            ddlTimeZones.DataValueField = "Id";
            ddlTimeZones.DataBind();
        }
        else
        {
            ShowTime();
        }


    }

    private void ShowTime()
    {
        DateTime thisTime = DateTime.Now;
        TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById(ddlTimeZones.SelectedValue);
        DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);
        lblShowTime.Text = tstTime.ToShortTimeString();

    }
}
  

Добавьте только выпадающий список на странице с именем «ddlTimeZones» и метку с именем lblShowTime.

Надеюсь, это поможет…

Комментарии:

1. сэр, может быть ошибка в TimeZoneInfo tst =TimeZoneInfo.FindSystemTimeZoneById(выпадающий список 2.Выбранное значение);

2. Что такое SelectedValue? это должно быть похоже на это «Тихоокеанское стандартное время». И вы можете получить все эти значения с помощью вызова System. Коллекции. Объектная модель. ReadOnlyCollection<TimeZoneInfo> TimeZoneColl = TimeZoneInfo.GetSystemTimeZones();

3. TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById(выпадающий список 2.выбранное значение); DateTime tstTime = TimeZoneInfo. ConvertTime (это время, TimeZoneInfo.Local, tst); Label1. Text = tstTime;

4. Система. Коллекции. Объектная модель. ReadOnlyCollection<TimeZoneInfo> TimeZoneColl = TimeZoneInfo.GetSystemTimeZones(); выпадающий список 2.Источник данных = TimeZoneColl; Выпадающий список 2.DataBind();

5. это я добавляю для привязки выпадающего списка