这是我导航到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>
我在myPage.aspx
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField HeaderText="ColumnOne" Visible="true"/>
<asp:BoundField HeaderText="ColumnTwo" Visible="true"/>
</Columns>
</asp:GridView>
我想要做的是,如果查询字符串等于all
(〜/ myPage.aspx?show = all),我想将GridView1的Column2
设置为true,否则,将可见设置为false
我该怎么办?
答案 0 :(得分:8)
您可以使用gridview列索引隐藏特定列
代码可以是
if(Request.QueryString.Get("show")=="all")
GridView1.Columns[1].Visible=true;
else
GridView1.Columns[1].Visible=false;
更多细节
我想是的
<asp:BoundField HeaderText="ColumnTwo"
Visible='<% if (Request.QueryString.Get("all") == "all" ) "true" else "false" %>'/>
您必须检查syntex
试试这个
Visible='<% Request.QueryString.Get("all") == "all"? "true": "false"%>'
&lt;%=%&gt;直接输出到响应流,并且asp标记不是响应流的一部分。假设&lt;%=%&gt;是错误的运算符正在对asp标记执行任何类型的预处理。
更多解释
Why will <%= %> expressions as property values on a server-controls lead to a compile errors?
答案 1 :(得分: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;
}
答案 2 :(得分:1)
亲爱的尝试使用网格视图的RowDataBound事件,如
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;
}
}
尝试类似的东西。
希望它适合你。