Bonjour à tous,
J'ai développé une appli asp.net et c# (3.5) qui utilise une dropdownlist, le tout en ajax via un updatepanel.
Dans certains cas, j'ai besoin d'afficher un message d'avertissement à l'utilisateur. j'ai utilisé pour cela la fonction registerstartupscript avec le code JS qui va bien pour afficher mon alert.
Sous IE7 pas de problème. mais sous firefox 3, problème : dès qu'une alerte javascript est affiché, il n'est plus possible de changer l'élément sélectionné de la dropdownlist. pour pouvoir changer l'élément sélectionné de la dropdownlist, il faut soit actualiser la page, soit changer d'onglet puis revenir sur la page.
Ca ressemble à un bug de firefox, mais je préfère être sur avant de poster dans le bugzilla de mozilla, et je n'ai pas assez de compétences en Javascript pour vérifier si le bug vient ou non du code généré...
Voici un exemple très simple de page qui provoque ce bug.
La page ASPX :
[code]<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Page sans titre</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True">
<asp:ListItem>SDZIGJE</asp:ListItem>
<asp:ListItem>DHJFD</asp:ListItem>
<asp:ListItem>EUKEjH</asp:ListItem>
<asp:ListItem>SDSDDMF</asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
[/code]
Le code CS :
[code]using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "blabla", "alert('Alerte de test');", true);
}
}
[/code]