J'utilise GridView dans asp.net comme ceci:
mygrid.DataSource = dTable;
mygrid.DataBind();
if (mygrid.Columns.Count > 1)
{
mygrid.Columns[2].Visible = false;
}
mon code de vue de grille est comme suit
<asp:GridView ID="mygrid" runat="server" AllowPaging="True"
onpageindexchanging="mygrid_PageIndexChanging" PageSize="15"
PersistedSelection="true"
ondatabound="mygrid_DataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="Edit" runat="server" Text="Edit" NavigateUrl='<%# Eval("Value", "~/myweppage.aspx?Id=M{0}") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings PageButtonCount="4" />
</asp:GridView>
Ici, je ne peux pas définir visible=false
.
J'ai essayé avec la réponse suivante
Comment rendre plusieurs colonnes de gridview invisibles de manière dynamique?
Je ne trouve pas l'événement datarow
dans Visual Studio 2010. Quelqu'un peut-il m'aider à définir la propriété column visible?
ma structure de colonne de la table de données est
la colonne [0] est une colonne Value
, puis il y a 4 autres colonnes.
la structure de ma colonne en mode Grille est la colonne [0] est link field
colonne 1 est Value field from Dtable
4 autres colonnes
C'est la solution idéale pour les colonnes générées dynamiquement dans gridview
S'il vous plaît essayez ceci:
int indexOfColumn = 1; //Note : Index will start with 0 so set this value accordingly
protected void mygrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.Cells.Count > indexOfColumn)
{
e.Row.Cells[indexOfColumn].Visible = false;
}
}
Pour la page .aspx, éditez la balise gridview comme suit:
<asp:GridView ID="mygrid" runat="server" AllowPaging="True"
onpageindexchanging="mygrid_PageIndexChanging" PageSize="15"
PersistedSelection="true"
ondatabound="mygrid_DataBound"
OnRowDataBound="mygrid_RowDataBound">
cliquez avec le bouton droit de la souris sur gridview et sélectionnez Propriétés, puis sélectionnez les événements que vous y trouverez. RowDataBound Double-cliquez dessus et dans la ligne de données liée écrivez ceci.
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Visible = false;
}
* strong text * Essayez d'utiliser l'événement ItemDataBound
et essayez la syntaxe suivante pour masquer la colonne de manière dynamique:
mygrid.Columns[1].Visible = false //(Example)
Le nombre de colonnes pour un datatable commence à partir de 0 et non de 1. donc si c'est la deuxième colonne, vous voulez cacher, l'index devrait être 1.
J'espère que cela t'aides..
Voici la réponse simple. Créer css comme ci-dessous
.classHide{ display:none }
puis, au lieu de column.visible = false
, assignez simplement la classe CSS classHide
à la colonne.
par exemple.
grdRole.Columns(0).ItemStyle.CssClass = "classHide"
grdRole.Columns(0).HeaderStyle.CssClass = "classHide"
Essaye ça:
for (int i = 0; i < YourGrid.Rows.Count; i++)
{
(YourGrid.Columns[2]).Visible = false;
}