L'événement OnSelectedIndexChanged
ne se déclenche pas pour ma liste déroulante. Tous les forums que j'ai regardés m'ont dit d'ajouter le AutoPostBack="true"
, mais cela n'a pas changé les résultats.Dropdown OnSelectedIndexChanged non déclenché
HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Current Time: " /><br />
<asp:Label ID="lblCurrent" runat="server" Text="Label" /><br /><br />
<asp:DropDownList ID="cboSelectedLocation" runat="server" AutoPostBack="true" OnSelectedIndexChanged="cboSelectedLocation_SelectedIndexChanged" /><br /><br />
<asp:Label ID="lblSelectedTime" runat="server" Text="Label" />
</div>
</form>
</body>
</html>
code derrière:
public partial class _Default : Page
{
string _sLocation = string.Empty;
string _sCurrentLoc = string.Empty;
TimeSpan _tsSelectedTime;
protected void Page_Load(object sender, EventArgs e)
{
AddTimeZones();
cboSelectedLocation.Focus();
lblCurrent.Text = "Currently in " + _sCurrentLoc + Environment.NewLine + DateTime.Now;
lblSelectedTime.Text = _sLocation + ":" + Environment.NewLine + DateTime.UtcNow.Add(_tsSelectedTime);
}
//adds all timezone displaynames to combobox
//defaults combo location to seoul, South Korea
//defaults current location to current location
private void AddTimeZones()
{
foreach(TimeZoneInfo tz in System.TimeZoneInfo.GetSystemTimeZones())
{
string s = tz.DisplayName;
cboSelectedLocation.Items.Add(s);
if (tz.StandardName == "Korea Standard Time") cboSelectedLocation.Text = s;
if (tz.StandardName == System.TimeZone.CurrentTimeZone.StandardName) _sCurrentLoc = tz.StandardName;
}
}
//changes timezone name and time depending on what is selected in the cbobox.
protected void cboSelectedLocation_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (TimeZoneInfo tz in System.TimeZoneInfo.GetSystemTimeZones())
{
if (cboSelectedLocation.Text == tz.DisplayName)
{
_sLocation = tz.StandardName;
_tsSelectedTime = tz.GetUtcOffset(DateTime.UtcNow);
}
}
}
}
Des conseils en quoi regarder pour un codeur asp recrue?
EDIT: ajouté plus de code derrière
Graham Clark a eu raison du besoin !Page.IsPostBack
, mais il est maintenant quelque chose avec les variables globales que je jeu. Ce code a été glissé et déposé d'un projet C#, donc je suppose qu'il y a quelques problèmes avec les variables globales et asp.net. Il est temps pour moi de faire plus de recherches à ce sujet pour comprendre comment les variables globales diffèrent dans un programme autonome par opposition à un web.
Etes-vous sûr qu'il ne se déclenche pas? Avez-vous défini un point d'arrêt en dehors de la foreach? Il pourrait s'agir d'un problème sans rapport entre vous qui vous amène à croire qu'il ne tire pas. – ctorx
Comment liez-vous les données à la liste déroulante? Votre balisage montre une liste déroulante vide. Est-ce que vous liez des valeurs dans le code derrière? –
@matthew: Oui, il ne se déclenche pas en dehors de la boucle foreach. @KP: Je suis en train de mettre des informations sur le fuseau horaire dans le code. – Jim