Comment puis-je utiliser le RowCreated événement pour GridViews
Problème:
Je veux ajouter des en-têtes dans le milieu d'un gridview databind. J'ai mis à jour la Table de données pour inclure les en-têtes et leurs positions correctes(j'ai vérifié au cours de débogage, ils sont là). Sur les nouvelles lignes qui contiennent des en-têtes, l'un des champs inutiles (inutiles que dans l'en-tête n'a pas besoin de cette information) est un indicateur appelé "sous-en-tête".
Informations d'arrière-plan:
Donc ma datatable lignes de détenir un nom de serveur, et le groupe appartient le serveur. J'ai mis à jour la Table de données de sorte qu'il insère une nouvelle ligne d'où le nom du serveur est le texte d'en-tête. Le groupe de serveurs que cette nouvelle ligne appartient à "sous-en-tête". Ma datatable contient plus d'informations que ce que mon gridview montre. Mon gridview une seule colonne, mais a une colonne avec visibility=false;
qui détient le groupe de serveurs.
Ce que je veux réaliser:
Alors quand j'ai lier ce datatable pour le contrôle gridview je veux que tous les non-lignes d'en-tête pour avoir des liens qui pointent vers un autre emplacement. Toutes les lignes de données qui sont en-têtes, je veux juste les laisser comme c'est.
Code:
private void CurrentServers_RowCreated(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if(e.Row.Cells[1].Text != "Subheader")
{
e.Row.Cells[0].Text = "<a href='/EventViewer.aspx?m=" + e.Row.Cells[0].Text + "&s=&e=Application&r=25'>" + e.Row.Cells[0].Text + "</a>";
}
}
}
Questions:
Ce n'est pas de travail. e.Row.Cells[1].Text != "Subheader"
retourne toujours true. Dans le débogage je vérifier la valeur de e.Row.Cells[1].Text
et quelque part il y a les informations dont j'ai besoin.
- Est-ce le bon cas je dois être la manipulation?
- Comment puis-je accéder à ces données?
e.Row.Cells[1].Text
ete.Row.Cells[1].ToString()
ne retourne pas le résultat que je veux, même si, lors de débogage je peux trouver de la valeur que je veux danse.Row
- J'ai essayé de trouver exactement comment cela fonctionne, mais je suis incapable de trouver des réponses. Si mon GridView seulement a des colonnes pour 2 datatable colonnes, sera
e.Row.Cells
seulement les 2 cellules qui ma gridview l'exige, ou est-ce à prendre place en dehors des pauses de la datatable (c'est à dire a-t-elle toutes les colonnes que ma datatable a)
_RowDataBound
?J'ai essayé ça aussi, mais je suis pas sûr de l'événement dont j'ai besoin pour être la manipulation et comment. Reportez-vous à la question 1.
et
_RowDataBound
ne fonctionne pas? pour ta question 1 : forums.asp.net/t/996312.aspxNon,
_RowDataBound
eu le même problème, je ne pense pas que je suis en les utilisant correctement, mais dans les exemples que j'ai googlé qu'ils se ressemblent.OriginalL'auteur Steve's a D | 2012-06-26
Vous devez vous connecter pour publier un commentaire.
Selon la façon dont vous vous liez vos données et comment vous obtenez un groupe de serveurs, vous pouvez effectuer les opérations suivantes:
Dans le modèle d'élément où vous êtes l'affichage du contenu de nonheader ligne, au lieu de texte brut utiliser deux espaces, l'un tiendra étiquette pour nonhyperlink texte et un autre tiendra lien hypertexte. Vous liez les deux contrôles de quel que soit le texte de la propriété que vous utilisez. Et de l'ensemble de ces espaces pour la visibilité de
Eval("ServerGroup").ToString().ToLowerInvariant().Equals("subheader")
et!Eval("ServerGroup").ToString().ToLowerInvariant().Equals("subheader")
. De cette façon, vous n'aurez pas à écrire du code pour effectuer le contrôle de la manipulation et de s'éloigner de l'aide RowDataBound événement tous ensemble.Laissez-moi savoir si ce n'est pas logique 🙂
EDIT:
Édité répondre à montrer la maquette de balisage d'une colonne gridview
Merci, c'est très intelligent. J'ai toujours le besoin de gérer de la même, mais je voudrais juste ajouter des données à la fois des espaces réservés, correct?
Dépend exactement ce que vous voulez faire. Veuillez fournir plus de détails pour nous de vous donner de meilleurs conseils
Non, ce que vous avez est correct, je n'ai pas lu assez attentivement et j'étais confus.
OriginalL'auteur Dimitri