2010-12-02 4 views
1

Je ne comprends pas pourquoi je ne peux pas obtenir la valeur sélectionnée ddl ..problème DROPDOWNLIST

ASP CODE:

<table> 
    <tr> 
     <th> Annee:</th> 
     <td> 
      <asp:DropDownList ID="ddlAnnee" runat="server" /> 
     </td> 
    </tr> 
    <tr> 
     <th colspan="2"> 
     <asp:Button ID="btnValidate" runat="server" onclick="btnValidate_Click" 
            Text="Validate" /> 
     </th> 
    </tr> 
</table> 

code-behind:

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       BindControls(); 
      } 
     } 

     public void BindControls() 
     { 
      this.ddlAnnee.DataSource = new BLL.ANNEE_MANAGER().List(false, true, null); 
      this.ddlAnnee.DataTextField = "INTITULE_AN"; 
      this.ddlAnnee.DataValueField = "ID_AN"; 
      this.ddlAnnee.DataBind(); 
     } 

     protected void btnValidate_Click(object sender, EventArgs e) 
     { 
      int Id_an = int.Parse(this.ddlAnnee.SelectedValue); 

     } 
    } 
} 

Alors, quand je mettre un point d'arrêt au chargement de la page et la partie de liaison, c'est bon, le ddl est rempli correctement et la page affiche correctement le ddl. Quand je clique sur le bouton, j'arrive dans la méthode btnValidate_Click mais le ddl est empy!

Je suppose que j'ai oublié quelque chose .. S'il vous plaît aidez-moi!

Merci ..

Répondre

1

Ne pas supprimer IsPostBack, la méthode BindControl doit être dans! IsPostBack Condition sinon vous n'obtiendrez jamais la valeur sélectionnée. Assurez-vous simplement que la méthode ne supprime pas la liste déroulante ddlAnnee.

+0

En fait j'ai toujours la première valeur de ddl si je supprime! Condition IspostBack. Mais comment puis-je m'assurer de la compensation? –

+0

Le code donné fonctionne bien pour moi dans le cadre 3.5 ou supérieur. Quel cadre utilisez-vous? – sam

+0

En fait viewstate a été désactivé .. Honte à moi .. merci –

0

Retirez le IsPostBack contrôle - lorsque vous cliquez sur le bouton, le code n'est pas remplir à nouveau le menu déroulant de sorte qu'il est vide et la valeur sélectionnée n'existe plus.

+0

Oui, merci c'est du travail mais la valeur est toujours la première maintenant, chaque fois que je change le ddl, la valeur prend toujours la première entrée dans le ddl .. –

0

Vous devez lier la grille à la fois sur un nouveau chargement de page et sur une publication.

0

Je pense que lorsque vous cliquez sur le bouton, la charge de la page est exécutée et vous tirez toutes les données de ddl au clic ou après l'exécution de l'action fils alors que l'événement clic est effectué et que vous avez placé le bindcontrol ddl va se lier la première fois que la page est chargée, donc changez le code en fonction des besoins.