2 votes

Comment lier plus d'une liste déroulante sans rafraîchissement?

protected void Page_Load(object sender, EventArgs e)
{

        bindbranches();
        bindbranches1();

}
public void bindbranches()
{
    DataTable dtbranch = new DataTable();
    dtbranch = objsupplyBAL.getbrnch();

    ddlbranch.DataSource = dtbranch;
    ddlbranch.DataBind();
    ddlbranch.Items.Add(new ListItem("--sélectionnez--", "0"));
    ddlbranch.SelectedIndex = ddlbranch.Items.Count - 1;

}
public void bindbranches1()
{
    DataTable dt = new DataTable();
    dt = objsupplyBAL.getbrnch();

    ddlbranch1.DataSource = dt;
    ddlbranch1.DataBind();
    ddlbranch1.Items.Add(new ListItem("--sélectionnez--", "0"));
    ddlbranch1.SelectedIndex = ddlbranch1.Items.Count - 1;

}

Mes listes déroulantes ne se lient pas sans rafraîchissement. Si je sélectionne une liste déroulante, l'autre se met à jour. Que dois-je ajouter en plus à mon code ? Quelqu'un peut-il me dire...

3voto

Sambasiva Points 392
protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
 {

    bindbranches();
    bindbranches1();
  }
}

si vous ajoutez ceci... cela fonctionne correctement... essayez d'abord ceci...

1voto

Nunners Points 3047

La raison pour laquelle cela se produit est que vous exécutez le code à chaque fois que la page fait un postback, essayez ce qui suit pour ne remplir les éléments qu'une seule fois (lors du chargement initial de la page) :

protected void Page_Load(object sender, EventArgs e) {
    if (!this.IsPostBack) {
        bindbranches();
        bindbranches1();
    }
}

Alternativement, vous pouvez également gérer l'événement Page.Init pour exécuter ce code, cela changera les dropdowns lorsque la page est d'abord chargée et conservera les valeurs tout au long des postbacks ultérieurs :

protected void Page_Init(object sender, EventArgs e) {
    bindbranches();
    bindbranches1();
}

Si vous voulez que le deuxième dropdown se rafraîchisse uniquement lorsque le premier élément est sélectionné, essayez la solution suivante :

protected void ddlbranch_SelectedIndexChanged(object sender, EventArgs e) {
    bindbranches1();
}

Et liez ddlbranch_SelectedIndexChanged à l'événement de changement d'index sélectionné de votre contrôle ddlbranch. Cela exécutera le code uniquement lors du chargement initial de la page et lorsque l'utilisateur sélectionne un élément dans le dropdown ddlbranch

0voto

krish Points 160

Vous devrez définir la propriété AutoPostBack de la liste déroulante sur true si vous voulez remplir une autre liste déroulante lors du changement d'une liste déroulante, de sorte que l'événement de changement commencera à s'exécuter

Regardez @ http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.autopostback.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X