【问题标题】:How to hide gridview column after databind?数据绑定后如何隐藏gridview列?
【发布时间】:2012-09-30 04:24:17
【问题描述】:

我使用以下链接中的解决方案隐藏我的列

How to hide a TemplateField column in a GridView

但是这会导致更新操作出现问题,因为 gridview 充当隐藏行具有空值。那么数据绑定后如何隐藏列呢?

protected void begv_OrderDetail_RowCreated(object sender, GridViewRowEventArgs e)
{
    ((DataControlField)begv_OrderDetail.Columns.Cast<DataControlField>().Where(fld => fld.HeaderText == "FileNo").SingleOrDefault()).Visible = "False";
}

【问题讨论】:

    标签: c# asp.net gridview sqldatasource


    【解决方案1】:

    试试这个,

    grid1.Columns[columnIndex].Visible= false;
    

    根据提问者的评论进行编辑,获取隐藏列的值

    您可以使用隐藏字段来存储列值。这个article 的示例将帮助您如何使用隐藏字段。

    您可以将列的数据放在 datakeynames 中,然后再访问这些值,而不是隐藏列。这将有助于了解如何使用 DataKeyNames。通过这种方法,您可能需要从数据键名中传递 id 并获取记录。

    【讨论】:

    • 这不起作用。我手动为 Gridview 的数据库添加了一些值。当我的列被隐藏时,更新按钮会将此值更新为 null。不隐藏列时,更新按钮后的默认值保持不变。(这和我的有什么区别?,他们不一样吗?)
    • 您可以将列的数据放在 datakeynames 中,然后访问这些值,而不是隐藏列。这将有助于抓住这个概念。 codeproject.com/Articles/23833/DataKeyNames
    • 非常感谢,将隐藏列的数据值添加到 datakeynames 解决了我的问题。
    • 问题在隐藏行时没有更新,这一次,当隐藏行可见时,它不会更新值,因为它使用数据键名作为其参数并保持当前值
    【解决方案2】:

    试试这个例子,(我不会说英语)

    进入 RowDataBound ...

     protected void gvTeste_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                teste listaTeste = e.Row.DataItem as ListaTeste;
    
                if (listaTeste.ID == 0)
                {
                    e.Row.Cells[2].Text = "Não Atribuido";
                }
    
                if (e.Row.Cells[7].Text == "01/01/0001" || e.Row.Cells[8].Text == "01/01/0001")
                {
                    **e.Row.Visible = false;** // disable row
                }
            }
        }
    

    【讨论】:

    • 他想隐藏列而不是行!
    猜你喜欢
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    相关资源
    最近更新 更多