2011-04-05 2 views
0

У меня есть три поля, отображаемые в виде сетки. В зависимости от значения первого поля я должен либо отображать, либо скрывать два вторых поля.Gridview -Problem

Следующий код - это то, что я пробовал до сих пор, но я не знаю, как получить полное решение.

Может ли кто-нибудь посмотреть, пожалуйста?

Три поля

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

Я использовал это, но если у нас есть две записи с активным статусом True и False в одной и той же странице, то это не сработает .. Спасибо, однако, хотя! –

+0

Что именно вы подразумеваете под словом «это не работает»? Чего вы ожидали? Что на самом деле произошло, когда вы попробовали? – Yetti

+0

если есть две записи на странице с activeStatus Value = True и False, она не скрывает столбцы, поэтому цель сделать ее видимой неверна. Я должен использовать другой подход. Не то, чтобы ваш код работал, но сам подход не работает. Поэтому я должен взять на себя вину, спасибо –

0

я сделал что-то вроде этого, используя, IIRC, событие CellFormatting. Это дает вам возможность проверить значение каждой ячейки и заменить ее или другие ячейки в строке на основе этого. В моем случае я заменял числовые значения поисковыми строками и менял цвет фона.