我在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
}
}
}
答案 0 :(得分: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 :(得分:1)
我从您的问题中收集到的是您想知道如何隐藏或显示DataGridView中的任何给定列。如果是这样,您只需要使用DataSource或手动将列添加到DataGridView,然后通过执行以下操作隐藏您不想要的任何列:
dataGridView1.Columns["YourColumnName"].Visible = false;
答案 2 :(得分:0)
我使用IIRC,CellFormatting事件做了类似的事情。它使您有机会测试每个单元格的值,并根据它替换它或行中的其他单元格。在我的例子中,我用查找的字符串替换数值并改变背景颜色。