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.

  1. Est-ce le bon cas je dois être la manipulation?
  2. Comment puis-je accéder à ces données? e.Row.Cells[1].Text et e.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 dans e.Row
  3. 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)
pourquoi n'essayez-vous pas _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.aspx
Non, _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