在ASP.NET gridview中切换列显示

时间:2013-09-13 17:39:15

标签: asp.net gridview

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

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

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

这是我到目前为止所做的事情。 RowEditing事件具有以下代码:

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

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

GridView1.Columns(16).Visible = True

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

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

2 个答案:

答案 0 :(得分:0)

尝试使用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 

答案 1 :(得分:0)

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

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