web-dev-qa-db-fra.com

afficher sous condition masquer la colonne Gridview asp.net

Voici comment je navigue vers myPage.aspx,

<a href='~/myPage.aspx?show=<%#Eval("id")%>' id="showEach" runat="server">Show Each</a>

<a href="~/myPage.aspx?show=all" id="showAll" runat="server">Show All</a>

Et j'ai une grille dans myPage.aspx

<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField  HeaderText="ColumnOne"  Visible="true"/>
<asp:BoundField  HeaderText="ColumnTwo"  Visible="true"/>
</Columns>
</asp:GridView>

Ce que je veux faire, c'est que si la chaîne de requête est égale à all (~/myPage.aspx? Show = all), je veux que les Column2 De GridView1 soient visibles à true, sinon, définir visible sur faux.
Comment puis-je le faire ?

10
zey

vous pouvez utiliser l'index de colonne gridview pour masquer la colonne particulière

Le code pourrait être

 if(Request.QueryString.Get("show")=="all")
    GridView1.Columns[1].Visible=true;
 else
    GridView1.Columns[1].Visible=false;

Plus de détails

GridView Hide Column par code

Modifier 1

Je pense que oui

 <asp:BoundField HeaderText="ColumnTwo" 
      Visible='<% if (Request.QueryString.Get("all") == "all" ) "true" else "false" %>'/>

Vous devrez vérifier le syntex

Modifier 2

Essaye ça

 Visible='<% Request.QueryString.Get("all") == "all"? "true": "false"%>'

Modifier 3

Ne peut pas être fait directement.

<% =%> sort directement dans le flux de réponse et le balisage asp ne fait pas partie du flux de réponse. C'est une erreur de supposer que les opérateurs <% =%> effectuent tout type de prétraitement sur le balisage asp.

Plus d'explication

Pourquoi les expressions <% =%> en tant que valeurs de propriété sur un serveur-contrôles conduiront-elles à des erreurs de compilation?

9
शेखर

Vous pouvez utiliser la méthode de pré-rendu gridview pour définir ceci ...

protected void GridView_PreRender(object sender, EventArgs e)
    {
        if(Reqest.QueryString["Id"]=="all"&& Reqest.QueryString["Id"]!=null)
         {
           GridViewId.Columns[1].Visible = true;
         }
        else
            GridViewId.Columns[1].Visible = false;
    }
8
Amit Singh

Cher essayez d'utiliser RowDataBound événement de Grid View comme

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //here apply your condition
        if(Request.QueryString["name"] == "all")
        e.Row.Cells[<index_of_cell>].Visible = true;
        else
        e.Row.Cells[<index_of_cell>].Visible = false;
    }
}

Essayez quelque chose comme ça.

J'espère que ça marche pour toi.

1
Rahul