更改下拉列表时如何更新标签

时间:2011-05-04 09:52:50

标签: c# asp.net

我的页面有一个标签和一个下拉列表,其中包含时区。每次更改时区下拉列表中的值时,是否可以自动更改标签文本以显示下拉列表中的选定值?我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

您可以编写一个javascript函数来更新您的标签,并从下拉列表的onchange属性中调用它。

答案 1 :(得分:0)

选择下拉列表时,使用Ajax或客户端javascript来检测。 如果您确实使用javascript,请确保在关闭javascript时此行为也有效。 I.E.提交页面并更新服务器端的标签。

答案 2 :(得分:0)

要重新加载标签,您必须在DropDownList中设置AutoPostBack。 因此,您可以在Page_Load TimeZoneInfo上使用。

在MSDN上找到

Here is an example

    // 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));

首先,您必须按ID查找TimeZone。您可以使用以下方法检索所有ID:

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

然后在foreach cicle中,您可以获取ID并绑定下拉列表值。

毕竟你只需要像这样对例子进行参数化:

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的标签上添加一个下拉列表。

希望有所帮助...