【问题标题】:How to show hide a column of GridView?如何显示隐藏GridView的一列?
【发布时间】:2012-12-28 09:55:59
【问题描述】:

我在 Asp 中有一个用户控件,它有一个 GridView,'AutoGenerateColumns="False"。 我必须根据 UC 的属性隐藏或显示一列。我该怎么做?

这就是我的想法:

<asp:TemplateField HeaderText="<%=SelezionaColumnName  %>" HeaderStyle-Width="80px">

请注意,此处的 headerText 未设置为公共 const 字符串 SelezionaColumnName,但它完全按原样呈现(在字符串中),而不是值,而是带有 &lt;%= %&gt; 的名称。不知道为什么,是绑定的原因吗?

后面的代码:

public const string SelezionaColumnName = "Seleziona";

        public bool ShowSeleziona
        {
            set
            {
                grdMaterialiArt.Columns[GetColumnIndexByName(grdMaterialiArt, SelezionaColumnName)].Visible = value;
            }
        }

 protected int GetColumnIndexByName(GridView grid, string name)
        {
            foreach (DataControlField col in grid.Columns)
            {
                if (col.HeaderText.ToLower().Trim() == name.ToLower().Trim())
                {
                    return grid.Columns.IndexOf(col);
                }
            }

            return -1;
        }

注意:我必须注意使用 0 索引。可以在我的列之前添加列,因此我必须唯一标识该列。我继续按名称识别方法,因为 TemplateField 不能有 ID:| 希望我描述的场景足够好,我也搜索了很多,但没有找到类似的东西。

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:
     protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
    
            try
            {
                DataTable dt = (DataTable ) GridView1.DataSource;
                if (!dt.Columns.Contains("COLLUMN_YOU_WANNA_HIDE")) return;
                int j = dt.Columns.IndexOf("COLLUMN_YOU_WANNA_HIDE");
                e.Row.Cells[j].Visible = false;
                e.Row.Cells[j].Width = 0;
            }
            catch (Exception)
            {
    
    
            }
    
        }
    

    【讨论】:

    • 好。谢谢。还有另一个关于 headerText 的问题,我如何从代码隐藏中设置它?那么列名会有缺点吗?
    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 2013-07-03
    • 2014-09-09
    相关资源
    最近更新 更多