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
Comme je l'ai dit, si la seule chose pour vous d'obtenir nombre de colonnes, vous pouvez l'obtenir comme ça:
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
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
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
Vous devez vous connecter pour publier un commentaire.
Si vous définissez la
autogeneratedcolumns
propriététrue
ensuite le compte sera toujours montrer 0.De MSDN
Dans votre cas, vous n'avez pas déclaré vos colonnes explicitement. De sorte que vous pouvez obtenir des colonnes de compter comme ça à l'intérieur et à l'extérieur de la méthode de Clic si GridView contient au moins une ligne:
Ou vous pouvez obtenir des comtes de DataTable à l'intérieur de Cliquer sur méthode comme celle de @TimSchmelter a commenté:
DataTable.Columns.Count
propriété à la place qui fonctionne toujours.J'ai mis à jour ma réponse. Merci pour le commentaire.
Comment puis-je encore obtenir le nombre de colonnes si j'ai le autogeneratedcolumns valeur false à la propriété? Est-il un moyen de le faire?
OriginalL'auteur Farhad Jabiyev
GridView.Colonnes
renvoie uneDataControlFieldCollection
.De commentaires-section:
De la
GridView.Colonnes
section remarques:De sorte que les colonnes ajoutées de manière déclarative sont accessibles dans
GridView.Columns
. Puisque vous avez définiAutoGenerateColumns
àtrue
(par défaut), ils ne sont pas ajoutés à laColumns
collection.Si vous avez besoin le nombre de colonnes, vous devez utiliser votre
DataSource
. LeDataTable
a unColonnes
de la propriété qui est initialisé même si la table ne contient pas de lignes:le
DataTable
's les colonnes sont ensemble, même si ne contient pas de lignes (par opposition àGridView.Rows[0].Cells. Count
). Édité ma réponse.OriginalL'auteur Rango