2009-11-05 7 views
0

Je crée un GridView dynamique à partir d'un DataTable renvoyé à partir d'une procédure stockée. J'appeler et de se lier avec le code suivant:Asp.net recherche de colonne à partir de gridview dynamique

DataTable dt = Sql.reportData(Convert.ToInt32(Session["userID"])); 
this.GridView1.DataSource = dt.DefaultView; 
this.GridView1.DataBind(); 

Je dois recoiffer certaines colonnes, mais ils ne sont pas toujours le même numéro de colonne, et seulement la chaîne de texte en-têtes pour l'identifier. Existe-t-il un moyen facile de suivre une colonne comme ça afin que je puisse modifier ses attributs?

Merci, Alex

Répondre

2

J'ai couru dans moi-même. Vous devez parcourir les noms des colonnes, obtenir l'index, puis vous référer à l'index pour manipuler le style. Muhammad a raison sur le timing, mais vous ne serez pas à la recherche d'une étiquette - il semble que vous voulez styler toute la colonne, non?

http://forums.asp.net/p/1076872/1584635.aspx

ci-dessus a plusieurs versions d'une solution.

+0

yep doivent recoiffer colonnes entières, juste regarder http://aspadvice.com/blogs/joteke/archive/2007/02/19/Access-GridView-BoundFields-with-_2200_field-name_2200_.aspx qui est mentionné sur le lien que vous avez inclus. Merci, mettra à jour une fois que je l'ai donné un tourbillon :) – Alex

0

Le meilleur endroit pour trouver le contrôle et l'utiliser sera dans l'événement RowCreated. RowDataBound ne doit pas être utilisé car vous n'avez pas besoin de manipuler les données avec lesquelles la colonne est liée. Relancez donc les éléments de la colonne en les recherchant dans l'événement RowCreated.

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    e.Row.FindControl(""); 
} 
Questions connexes