根据后面的代码中的条件在Gridview中显示/隐藏一个文本框/标签

时间:2014-04-16 07:40:24

标签: c# asp.net gridview textbox

我有gridview,我想根据后面代码中的条件显示/隐藏其中一个

<ItemTemplate>
<asp:TextBox ID="Q1TB" runat="server" Text='<%# Bind("Q1") %>'></asp:TextBox>
<asp:label ID="Q1LB"  runat="server" Text='<%# Bind("Q1") %>'></asp:label>
</ItemTemplate>

尝试了许多事情,但没有成功

编辑:

在RowDataBound中尝试

e.Row.FindControl("Q1TB").Visible = False

未将Object引用设置为对象的实例。错误

还尝试将样式更改为显示为无错误

e.Row.FindControl("Q1TB").Style.Add("display", "none")

Style不是style.web.ui.control

的成员

3 个答案:

答案 0 :(得分:0)

试试这个

设计页面

<GridView ID="MyGridView" OnDataBound="GridView_DataBound">

<强>代码隐藏: -

protected void GridView_DataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
    if (Set condition here)
    {
        MyGridView.Columns[1].Visible = false;
        MyGridView.Columns[2].Visible = false;
    }
  }
}

答案 1 :(得分:0)

在数据绑定中尝试:

TextBox  tempText = e.Item.FindControl("Q1TB") as TextBox;
tempTex.Visible = False;

答案 2 :(得分:0)

如果目的是显示或隐藏页面的一部分,那么您可以执行以下操作

1)用

将其包装在标记中
<% if(somecondition) { %>
   some html
<% } %>


<ItemTemplate>
<%
if(condition)
    {%>

<asp:TextBox ID="Q1TB" runat="server" Text='<%# Bind("Q1") %>'></asp:TextBox>



   <% } 
else 
{
%>

<asp:label ID="Q1LB"  runat="server" Text='<%# Bind("Q1") %>'></asp:label>
<% } %>



</ItemTemplate>