2009-11-26 4 views
0

im en utilisant le code suivant pour remplir dynamiquement dropdownlist ... je veux que cette valeur devrait être le sujet id et le texte devrait être le sub_desc ... mais le code ne fonctionne pas la valeur ne contient pas les sub_ids .. .so Qu'est-ce qui ne va pas avec le code ??remplir dynamiquement dropdownlist

(SUB_ID est le champ entier)

public void Populate() 
     { 
      string ConnectionString = (string)ConfigurationManager.AppSettings["ConnectionString"]; 
     SqlConnection conn = new SqlConnection(ConnectionString); 
      SqlCommand popCmd = new SqlCommand("select sub_id,sub_desc from subject", conn); 
      try 
      { 
       conn.Open(); 
       ddlSub.Items.Clear(); 

       SqlDataReader subs; 
       subs = popCmd.ExecuteReader(); 


       ddlSub.DataSource = subs; 
       ddlSub.DataValueField = "sub_id"; 
       ddlSub.DataTextField = "sub_desc"; 
       ddlSub.DataBind(); 
       conn.Close(); 
      } 
      catch (Exception ex) 
      { 
       lblMsg.Visible = true; 
       lblMsg.Text = ex.ToString(); 

      } 

     } 

... Thanx

+0

Vous devez insérer le nouvel élément après la liaison, pas avant. –

+0

À quel moment du cycle de vie de page appelez-vous Populate? – Phaedrus

+0

J'appelle cette méthode au chargement de la page. – anay

Répondre

0

Vous pouvez vous ajouter par défaut après la liaison de données. Vous devrez insérer à un index de 0 mais plutôt que d'ajouter.

3

Vous pouvez définir AppendDataBoundItems="true" pour vous assurer que les éléments liés aux données n'effacent pas les éléments de liste insérés manuellement.

<asp:DropDownList ID="DropDownList" runat="server" AppendDataBoundItems="true"> 
    <asp:ListItem Value="--Select Subject--" Text="--Select Subject--" Selected="true"></asp:ListItem> 
</asp:DropDownList> 

Vous pouvez également accomplir cela dans le code derrière.

... 
dropSub.Items.Add(new ListItem("--Select Subject--", "0")); 
dropSub.AppendDataBoundItems = true; 
SqlDataReader subs; 
subs = popCmd.ExecuteReader(); 
ddlSub.DataSource = subs; 
ddlSub.DataValueField = "sub_id"; 
ddlSub.DataTextField = "sub_desc"; 
ddlSub.DataBind(); 
conn.Close(); 
... 
Questions connexes