これが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。
どうすればできますか?
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"%>'
<%=%>は応答ストリームに直接出力され、ASPマークアップは応答ストリームの一部ではありません。 <%=%>演算子がASPマークアップであらゆる種類の前処理を実行していると想定するのは誤りです。
詳細な説明
これを設定するには、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;
}
親愛なる 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;
}
}
そのようなことを試してください。
それがあなたのために働くことを願っています。