有条件地显示隐藏asp.net Gridview列

zey*_*zey 10 c# asp.net gridview visible

这是我导航到的方式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>
Run Code Online (Sandbox Code Playgroud)

我有一个gridview myPage.aspx

<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField  HeaderText="ColumnOne"  Visible="true"/>
<asp:BoundField  HeaderText="ColumnTwo"  Visible="true"/>
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

我想要做的是,如果查询字符串等于all(〜/ myPage.aspx?show = all),我想将GridView1的Column2可见性设置为true,否则,将visible设置为false.
我该怎么做 ?

शेख*_*ेखर 9

您可以使用gridview列索引来隐藏特定列

代码可能是

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

更多详情

GridView按代码隐藏列

编辑1

我想是的

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

你必须检查syntex

编辑2

试试这个

 Visible='<% Request.QueryString.Get("all") == "all"? "true": "false"%>'
Run Code Online (Sandbox Code Playgroud)

编辑3

不能直接完成.

<%=%>直接输出到响应流,而asp标记不是响应流的一部分.假设<%=%>运算符在asp标记上执行任何类型的预处理是错误的.

更多解释

为什么<%=%>表达式作为服务器控件上的属性值会导致编译错误?


Ami*_*ngh 8

您可以使用gridview预渲染方法来设置此...

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;
    }
Run Code Online (Sandbox Code Playgroud)