2010-01-06 4 views
0

J'ai ajouté Dropdownlist dans Gridview à l'événement RowDataBound. Le code est:Gestionnaire d'événements de Dropdownlist dans Gridview

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    DropDownList ddlSeason = new DropDownList(); 

    ddlSeason.DataSourceID = "odsRoomSeason"; 
    ddlSeason.DataTextField = "SeasonTittle"; 
    ddlSeason.DataValueField = "SeasonID"; 
    ddlSeason.AutoPostBack = true; 
    ddlSeason.SelectedIndexChanged += new EventHandler(ddlSeason_SelectedIndexChanged); 

    TableCell tcSeason= new TableCell(); 

    tcSeason.Controls.Add(ddlSeason); 
    e.Row.Cells.AddAt(e.Row.Cells.Count, tcSeason); 
} 

Le gestionnaire d'événements, j'ai ajouté est:

protected void ddlSeason_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // 
} 

Mais le problème est que la fonction de gestionnaire d'événements ne se coince pas l'événement. S'il vous plaît dites-moi comment écrire le gestionnaire d'événements correct, aussi j'ai besoin d'obtenir la ligne à partir de laquelle l'événement Dropdownlist a tiré.

+0

Avez-vous défini AutoPostBack = "True" pour la liste déroulante? –

+0

Oui, j'ai défini cette propriété – hotcoder

Répondre

1

avez-vous réussi à résoudre cela en attendant?

Assurez-vous de DataBind() la grille avant les événements vont être tiré, parce que ASP.NET ne peut distribuer l'événement corrently si les sont là en ce moment les contrôles créés dynamiquement. Le cycle de vie de page après un poste revient à peu près comme ceci:

  1. initialisation
  2. Page_Load()
  3. des événements de processus
  4. PreRender()
  5. Render()

Par conséquent, J'ai eu des problèmes similaires lorsque j'ai généré les contrôles dynamiques sur PreRender ou version ultérieure uniquement, car les événements sont traités avant ces étapes. Il peut être nécessaire de DataBind() la grille même deux fois pendant le cycle de vie de la page: Une fois dans Page_Load(), après avoir traité les événements et mis à jour le modèle, un autre DataBind() dans PreRender() afin de refléter le nouveau modèle Etat.