web-dev-qa-db-fra.com

Comment rendre la colonne gridview visible vrai ou faux dynamiquement?

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

5
Raghuveera

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">
6
Bhavesh Kachhadiya

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;
}
1
Vishal Pandey

* 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..

1
Sai Avinash

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"
1
Indranil.Bharambe

Essaye ça:

for (int i = 0; i < YourGrid.Rows.Count; i++)
{
    (YourGrid.Columns[2]).Visible = false;
}
0
Pavani Manthena