Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 条件隐藏GridView模板列_C#_Asp.net_Aspxgridview_Templatefield - Fatal编程技术网

C# 条件隐藏GridView模板列

C# 条件隐藏GridView模板列,c#,asp.net,aspxgridview,templatefield,C#,Asp.net,Aspxgridview,Templatefield,我试图在Gridview中有条件地隐藏一个模板列,我尝试了以下方法,但这不起作用。在.aspx中是否有这样做的方法 <asp:TemplateField HeaderText="Grade" SortExpression="grade" Visible='<%# Convert.ToDouble(Eval("grade")) == 0 ? true : false %>'> <Ite

我试图在Gridview中有条件地隐藏一个模板列,我尝试了以下方法,但这不起作用。在.aspx中是否有这样做的方法

 <asp:TemplateField HeaderText="Grade" SortExpression="grade" Visible='<%# Convert.ToDouble(Eval("grade")) == 0 ? true : false %>'>
           <ItemTemplate>
                <%# string.Format("{0:0.#}", Convert.ToDouble(Eval("grade"))) %>
           </ItemTemplate>
 </asp:TemplateField>

您可以使用itemDataBound事件执行所有条件格式设置(颜色、隐藏等)。但是,您的示例标记似乎没有控件—您希望有一个用于该信息的控件。该控件应该有某种“id”或名称,可以在代码中引用

但是,因为您没有提供太多的标记?然后,我为cells集合和您可能拥有的控件提供了一个示例

假设我们有一个简单的网格视图。请注意,最后两个字段都是City,一个是绑定字段(通常很常见),另一个是标签(但可以是文本框或任何asp.net控件)

好的,我们得到这个输出:

现在,让我们基于say city隐藏一列。我们说City=“埃德蒙顿”,我们隐藏了控制权

因此,使用itemData绑定事件

在这个示例中,我有绑定字段(单元格)集合隐藏示例,以及如何使用模板控件(查找控件)实现这一点的示例

代码是这样的:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
   {
       GridViewRow gvRow = e.Row;

       // hide a Bound field
       TableCell f = gvRow.Cells(4);
       if (f.Text == "Edmonton")
           f.Style("Display") = "none";

       // hide a templated control

       Label lbl = gvRow.FindControl("lblCity");
       if (lbl.Text == "Edmonton")
           lbl.Style("Display") = "none";
   }
}
现在输出是这样的:

protected void Page_Load(object sender, System.EventArgs e)
{
    if (IsPostBack == false)
        LoadGrid();
}

public void LoadGrid()
{
    using (SqlCommand cmdSQL = new SqlCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels", new SqlConnection(My.Settings.TEST3)))
    {
        cmdSQL.Connection.Open();
        GridView1.DataSource = cmdSQL.ExecuteReader;
        GridView1.DataBind();
    }
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
   {
       GridViewRow gvRow = e.Row;

       // hide a Bound field
       TableCell f = gvRow.Cells(4);
       if (f.Text == "Edmonton")
           f.Style("Display") = "none";

       // hide a templated control

       Label lbl = gvRow.FindControl("lblCity");
       if (lbl.Text == "Edmonton")
           lbl.Style("Display") = "none";
   }
}