【问题标题】:Toggle column display in ASP.NET gridview在 ASP.NET gridview 中切换列显示
【发布时间】:2013-09-13 17:39:15
【问题描述】:

我有两个电子邮件字段,一个是文本字段(索引 15),另一个是 mailto:超链接(索引 16),两者都在网格视图中。 (是的,我知道通过索引进行识别并不是最好的方法——只是试图让它在这一点上工作)。

不编辑时,我只需要显示超链接字段(使其可供用户点击)。编辑时,我只需要显示文本字段,以便他们可以修改值。

我已按需要完成所有工作除了,在最初显示网格时两个字段都会显示。如果我尝试以任何正常方式隐藏文本字段(隐藏 RowDataBound 上的单元格或在声明时隐藏列),那么它在编辑时不会显示。

这是我目前正在做的事情。 RowEditing 事件代码如下:

 GridView1.Columns(16).Visible = False
 GridView1.Columns(15).Visible = True

RowCancelingEdit 事件具有相反的逻辑,切换两个字段的可见性。最后,RowUpdating 事件有以下内容,它会重新打开超链接显示:

GridView1.Columns(16).Visible = True

我对 ASP.NET 比较陌生,所以我绝对不知道所有可用的构造。

如何在正常网格显示时隐藏文本字段,但在编辑模式下仍然可以显示该字段?

【问题讨论】:

  • 我宁愿在一个列中显示/隐藏组件,具体取决于您是否正在编辑,而不是隐藏显示列

标签: asp.net gridview


【解决方案1】:

尝试 RowCommand 事件并设置编辑按钮 CommandName="name"

If e.CommandName = "name" Then
 Dim row As GridViewRow = DirectCast(DirectCast(e.CommandSource, LinkButton).NamingContainer, GridViewRow)
Dim lblwwwhid = CType(row.FindControl("txtwwwhid"), Label)
lblwwwhid .visible =false
End if 

【讨论】:

    【解决方案2】:

    我突然意识到,我可以简单地在初始数据绑定(有效)上显示/隐藏列,如下所示:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     If Not Page.IsPostBack Then
            DataBind()
            GridView1.Columns(16).Visible = True
            GridView1.Columns(15).Visible = False
     End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-04
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2014-09-09
      • 1970-01-01
      相关资源
      最近更新 更多