Colonne GridView.Le comte est toujours à 0 après databind avec un datatable

Je suis en train d'essayer de cacher/montrer GridView colonnes conditionnelle.

Je suis entrain de créer une dynamique DataTable et puis le Liant à la GridView

Plus tard, sur un post de retour, je suis à la vérification de l'état et souhaitez afficher/masquer les quelques colonnes de la GridView, mais la Colonne.Le comte est toujours 0!

Le code que j'ai est comme ci-dessous -
Page ASPX

<asp:GridView ID="GridView1" runat="server">
</asp:GridView>

.CS Page

 protected void Button1_Click(object sender, EventArgs e)
{
   DataTable aDT = new DataTable()
   aDT = createDataTable();   //datatable has 21 columns

   GridView1.DataSource = aDT;
   GridView1.DataBind();

   int temp = GridView1.Columns.Count;   //always 0
}

Pas sûr de ce qui est mal avec le code

De quoi êtes-vous en train d'essayer de réaliser? Vous ne pouvez pas accéder à une colonne avec AutoGenerateColumns ensemble de true, mais vous pouvez accéder à toutes les cellules via GridView1.Rows[0].Cells[0].Text etc.
Comme je l'ai dit, si la seule chose pour vous d'obtenir nombre de colonnes, vous pouvez l'obtenir comme ça: GridView1.Rows[0].Cells.Count;
si la seule chose qu'il veut, c'est le nombre de colonnes, il ne faut pas compter la rangée de cellules car il est possible qu'il n'y a aucune ligne qui serait la cause d'une exception. Au lieu de cela, il doit utiliser aDT.Columns.Count.
Oui, c'est vrai. Mais, j'ai pensé qu'il pourrait vouloir obtenir nombre de colonnes à l'extérieur de la Button_Click méthode. Et il peut vérifier si GridView contient toute la ligne.
mais si la grille contient pas de lignes qu'il ne peut pas obtenir le nombre de colonnes de la première ligne de la cellule de comptage. Si un chèque n'aide pas. Mais aDT.Columns.Count fonctionne toujours.

OriginalL'auteur user1889838 | 2014-03-24