2016-02-26 3 views
1

J'ai trois GridViews dont les ID sont: grdvwFilteredNo1, grdvwFilteredNo2, grdvwFilteredNo3Trouvez Gridview ID de l'intérieur de son événement RowCommand

chacun avec son propre événement RowCommand (chaque décocha par un LinkButton, sur une ligne)

grdvwFilteredNo1_RowCommand (sender objet, GridViewCommandEventArgs e) grdvwFilteredNo2_RowCommand (expéditeur d'objet, GridViewCommandEventArgs e) grdvwFilteredNo3_RowCommand (expéditeur d'objet, GridViewCommandEventArgs e)

Je cherche à consolider code en demandant aux trois Gridviews d'appeler le même événement RowCommand. (Le code de l'événement pour les trois est le même, sauf pour cette ligne où j'identifie le gridview par son ID
est ici la ligne du premier événement;.
Int32 intSelectedEEid = (Int32) grdvwFilteredNo1 .DataKeys [rowIndex] .Values ​​["EmployeeID"];)

Je pensais pouvoir utiliser une variable au lieu de l'ID gridview, mais je n'arrive pas à saisir l'ID gridview. En utilisant ce
GridView gView = ((Control) e.CommandSource) .Parent.Parent en tant que GridView;
gView.ID revient null.

Je pensais que le parent du LinkBtn était la ligne et que le parent de la ligne était le gridview. Comment puis-je trouver l'ID gridview à partir de son événement RowCommand?

Merci pour l'aide.

Répondre

0

Pour atteindre le GridView de l'événement RowCommand vous devez utiliser quelque chose comme ça

GridViewRow row = ((e.CommandSource as LinkButton).NamingContainer) as GridViewRow; 
GridView grd = row.NamingContainer as GridView; 

Utiliser Parent ne fonctionne pas parce que le parent de votre LinkButton est probablement pas directement le GridViewRow mais son ItemTemplate, au lieu du NamingContainer marchera la chaîne des ancêtres jusqu'à ce qu'elle en trouve une qui implémente l'interface INamingContainer.

+0

Merci, travaillé parfait. J'aime ce NamingContainer – NRT8