Search code examples
c#asp.netgridviewvisible

conditionally show hide asp.net Gridview column


This is how I navigate to 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>

And I have a gridview in myPage.aspx

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

What I want to do is , if Query String is equal to all(~/myPage.aspx?show=all) , I want to set GridView1's Column2's visible to true , else , set visible to false .
How can I do it ?


Solution

  • you can use gridview column index to hide the particular column

    Code could be

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

    More detail

    GridView Hide Column by code

    Edit 3

    Settings in ASPX/ASCX can not be done directly.

    <%= %> outputs directly to the response stream, and the asp markup is not part of the response stream. Its a mistake to assume the <%= %> operators are performing any kind of preprocessing on the asp markup.

    More explanation

    Why will <%= %> expressions as property values on a server-controls lead to a compile errors?

    Edit 1

    I think yes

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

    You will have to check for the syntex

    Edit 2

    Try this

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