2011-05-04 98 views
0

我的頁面有一個標籤和一個下拉列表,其中包含時區。每當時區下拉列表中的值發生變化時,是否可以自動更改標籤文本以從下拉列表中顯示選定的值?我該怎麼去做呢?如何更改下拉列表時更新標籤

回答

1

您可以編寫一個javascript函數來更新您的標籤並從您的下拉列表的onchange屬性中調用該函數。

+0

它顯示一個錯誤。未在本地系統上找到選定區域 – Manish 2011-05-05 04:55:52

+0

您使用的JavaScript是什麼? – geekchic 2011-05-05 09:07:08

0

使用Ajax或客戶端JavaScript來檢測何時下拉選擇。 如果你確實要去javascript,確保這個行爲也適用於javascript關閉。 I.E.提交頁面並更新服務器端的標籤。

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時區。您可以使用此方法檢索所有ID:

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

然後在foreach cicle你可以得到的ID和綁定的下拉列表值。

畢竟你只有parametizer像這樣的例子:

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的標籤上只添加一個下拉列表。

希望它有幫助...

+0

非常感謝你 – Manish 2011-05-04 11:15:30

+0

先生,有可能在 錯誤TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById(DropDownList2.SelectedValue); – Manish 2011-05-05 04:55:25

+0

什麼是SelectedValue?它一定是這樣的'太平洋標準時間'。你可以通過調用System.Collections.ObjectModel.ReadOnlyCollection TimeZoneColl = TimeZoneInfo.GetSystemTimeZones()獲得所有這些值。 – 2GDev 2011-05-05 08:54:47

相關問題