2011-04-05 25 views
0

グリッドビューに3つのフィールドが表示されています。最初のフィールドの値に応じて、2番目の2つのフィールドを表示または非表示にする必要があります。Gridview-問題

以下のコードはこれまでに試したことですが、完全な解決方法を知りません。

誰か気に入っていただけますか?

三つのフィールドが

1です)activeStatus

2)DateMadeInactive

3)あなたは、テンプレートフィールドに条件文を置くことができます

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      bool activeStatus=Convert.ToBoolean(DataBinder.Eval(e.Row.DataItem,"Active")); 
      if(activeStatus) 
      { 
       // I need to display the activeStatus columns  
      } 
      else 
      { 
       // I need to hide activeStatus Column and Display the DatemadeInactive  and Comments 
      } 

     } 

    } 

答えて

1

コメント:

<asp:GridView ... runat="server"> 
    <Columns> 
     ... your other fields ... 
     <asp:TemplateField HeaderText="Status"> 
     <ItemTemplate> 

      <asp:Label Text='<%# (bool)Eval("Active") 
           ? Eval("activeStatus") 
           : Eval("DateMadeInactive", "Inactive since {0}") %>' 
      runat="server"/> 

     </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
    </asp:GridView> 
1

あなたが質問から集めたのは、DataGridViewの任意の列を非表示または表示する方法を知りたいということです。もしそうなら、あなただけのデータソースまたは手動のどちらか、DataGridViewのに列を追加し、次の操作を実行してたくない列を非表示にする必要があります。

dataGridView1.Columns["YourColumnName"].Visible = false; 
+0

私はこれを使用していますが、アクティブステータスがTrueでFalseのレコードが2つある場合は、同じページでは動作しません。とにかくありがとうございます! –

+0

"それはうまくいかない"と正確にはどういう意味ですか?何が起こると思いますか?実際に試したときに何が起こったのですか? – Yetti

+0

activeStatus Value = TrueおよびFalseのページに2つのレコードがある場合、表示する目的が正しくないように列を非表示にしていません。私は他のアプローチを取らなければならない、あなたのコードが動作していない、それはアプローチ自体が動作していないです。だから私は責任を取らなければならない、ありがとう –

0

私が使用してこのような何かをしました、 IIRC、CellFormattingイベントです。これは、各セルの値をテストし、それに基づいて行または行の他のセルを置き換える機会を与えます。私の場合は、数値を検索した文字列で置き換えて背景色を変更していました。