2011-04-05 84 views
0

我有三個字段顯示在gridview中。根據第一個字段的值,我必須顯示或隱藏第二個字段。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,無論是用DataSource或手動,然後隱藏你不想任何列如下:

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

我都用這個,但是,如果我們有兩個記錄與Active狀態的真實,同一頁假,然後它不工作..反正雖然謝謝小號! – 2011-04-05 13:31:13

+0

你是什麼意思,「它不工作」?你期望會發生什麼?當你嘗試它時究竟發生了什麼? – Yetti 2011-04-05 13:35:47

+0

如果在具有activeStatus的頁面中有兩條記錄,那麼Value = True和False,它不會隱藏列,因此使其可見的目的不正確。我必須採取其他方法,不是你的代碼正在工作,而是這種方法本身不起作用。所以我必須承擔責任,謝謝 – 2011-04-05 13:55:02

0

我做了這樣的事情使用, IIRC,CellFormatting事件。它使您有機會測試每個單元格的值,並根據此值替換它或該行中的其他單元格。在我的情況下,我正在用查找的字符串替換數字值並更改背景顏色。