【问题标题】:show/hide one Textbox/Label in Gridview based on condition in code behind根据后面代码中的条件在 Gridview 中显示/隐藏一个文本框/标签
【发布时间】:2014-04-16 07:40:23
【问题描述】:

我有 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

没有将对象引用设置为对象的实例。错误

还尝试将显示样式更改为未出现错误

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

样式不是 style.web.ui.control 的成员

【问题讨论】:

  • 您是否尝试在GridView RowDataBound 事件中隐藏项目?你能用你已经尝试过的代码更新问题吗?
  • 一点代码、错误、它所在的行等会有所帮助。
  • 在找到e.Row.RowType、if(e.Row.RowType == DataControlRowType.DataRow){/*Your code*/}的控制检查之前
  • 显示/隐藏它们的条件是什么?

标签: c# asp.net gridview textbox


【解决方案1】:

这样试试

设计页面:

<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;
    }
  }
}

【讨论】:

  • 还需要检查RowType。
  • 我相信这个隐藏/显示列我想从同一行/列中隐藏一个文本框/标签
【解决方案2】:

在数据绑定中试试这个:

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

【讨论】:

    【解决方案3】:

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

    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>
    

    【讨论】:

      猜你喜欢
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      相关资源
      最近更新 更多