2010-04-19 4 views
1

J'ai fait ma liste déroulante qui obtient ses valeurs de la base de données et lors de l'exécution de l'application, cela n'a pas fonctionné et le compilateur n'a pas vu le code.Liste déroulante index sélectionné modifié

// ASPX

<asp:UpdatePanel ID="UpdatePanel3" runat="server"> 
       <ContentTemplate> 
         <asp:DropDownList ID="DDlProductFamily" runat="server" 
         ondatabound="DDlProductFamily_DataBound" 
         onselectedindexchanged="DDlProductFamily_SelectedIndexChanged"> 
               </asp:DropDownList> 
              </ContentTemplate> 
              <Triggers> 
               <asp:AsyncPostBackTrigger ControlID="DDlProductFamily" EventName="SelectedIndexChanged" /> 
              </Triggers> 
             </asp:UpdatePanel> 

// cs

protected void DDlProductFamily_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     using (SqlConnection Con = Connection.GetConnection()) 
     { 
      SqlCommand Com = new SqlCommand("SelectThumbByProductFamily", Con); 
      Com.CommandType = CommandType.StoredProcedure; 
      Com.Parameters.Add(Parameter.NewInt("@ProductCategory_Id", 
       DDlProductFamily.SelectedValue.ToString())); 
      SqlDataAdapter DA = new SqlDataAdapter(Com); 
      DA.Fill(dt); 
      DataList1.DataSource = dt; 
      DataList1.DataBind(); 
     } 
    } 

Répondre

3

Vérifiez si la zone de liste a la propriété AutoPostBack = "True".

+0

Merci, mais a été un autre problème apparaît la liste des données n'a pas eu de nouvelles valeurs de ddl quand il ddl sélectionné – Myworld

0

Avez-vous AutoEventWireup="true" ensemble dans la directive de page en haut de votre page ASPX? Vous aurez besoin que ce paramètre soit défini sur true pour que votre code fonctionne.

Pour plus d'informations s'il vous plaît voir Information about the AutoEventWireup attribute:

Dans Visual Studio .NET ou dans Visual Studio 2005 , les événements sont liés à méthodes de gestionnaire d'événement à l'aide événement délégués. Si vous utilisez le Concepteur Web Forms pour concevoir des formulaires Web, le concepteur génère automatiquement le code pour lier des événements à leurs méthodes de gestionnaire d'événements.

1

Vous devez charger les données de la DLL sur, par exemple, Chargement de la page, il est vide pour que votre fichier SelectedLndex ne soit jamais modifié.

Vous devez faire quelque chose comme ce code psuedo:

Page_load 
{ 
    if(!IsPostBack) 
    { 
     BindData(); 

    } 
} 

BindData() 
{ 
    // Do your DataBase/whatever call to fill the DDL 


} 

Et votre code vide DDlProductFamily_SelectedIndexChanged protégé (expéditeur d'objet, EventArgs e) reste le même.

Votre DDL aussi besoin de la propriété AutoPostBack = « true »

Questions connexes