web-dev-qa-db-ja.com

asp.netグリッドビュー列を非表示にする

これが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。
どうすればできますか?

10
zey

gridview列インデックスを使用して特定の列を非表示にすることができます

コードは

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

もっと詳しく

GridViewコードで列を非表示

編集1

私はイエスと思う

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

syntexを確認する必要があります

編集2

これを試して

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

編集3

直接行うことはできません。

<%=%>は応答ストリームに直接出力され、ASPマークアップは応答ストリームの一部ではありません。 <%=%>演算子がASPマークアップであらゆる種類の前処理を実行していると想定するのは誤りです。

詳細な説明

サーバーコントロールのプロパティ値として<%=%>式がコンパイルエラーになるのはなぜですか?

9
शेखर

これを設定するには、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;
    }
8
Amit Singh

親愛なる 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;
    }
}

そのようなことを試してください。

それがあなたのために働くことを願っています。

1
Rahul