如何更改gridview中超链接字段的可见性?

时间:2010-01-27 03:36:59

标签: asp.net gridview

我有一个包含一些数据和两个超链接字段的gridview 我想让第一行的第一个超链接字段不可见 并且最后一行的第二个超链接字段不可见

这就是我现在所做的事情

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim x As HyperLink
        x = e.Row.Cells(8).Controls(0)

        If e.Row.RowIndex = 0 Then
            x.Visible = False
        End If

        If e.Row.RowIndex = GridView1.Rows.Count Then
            'x = e.Row.Cells(9).Controls(0)
            'x.Visible = False
        End If
    End If
End Sub

这仅适用于第一个超链接字段。 省略注释将使第一个超链接字段对所有行都不可见。

感谢任何帮助。 提前致谢。

2 个答案:

答案 0 :(得分:1)

通过查看上面的代码,正如您所提到的,当您取消注释被注释的代码时,它将使第一个超链接字段对所有行都不可见,因为gridview.Rows.Count正在更改,因为它为每个行触发行。 您应该尝试在调用GridView1.DataBind()的地方执行此操作,意味着在该语句之后您应该检查总行数,然后找到超链接并禁用它。否则它将隐藏所有超链接作为每行的触发并且GridView1.Rows.Count正在改变。

OR

如果要在网格视图的RowDataBound事件中执行此操作,则可以检查 DataControlRowType.Footer,DataControlRowType.Pager行然后通过减去1或2得到最后一行,关于你的需要并得到最后一行。

希望这会有所帮助。

答案 1 :(得分:1)

如果可见性基于数据值,则可以使用HyperLink对象中的Visible属性。

           <asp:TemplateField HeaderText="Header" SortExpression="Field">
            <ItemTemplate>
              <asp:HyperLink ID="HyperLink1" runat="server" navigateUrl='http://www.google.com' Text='Google'
                    Visible='<%# Eval("flagShowLink") = "Yes"%>'></asp:HyperLink>
            </ItemTemplate>
           </asp:TemplateField>

您还可以在aspx文件中使用if语句来显示HyperLink。

<%If Session("Access") > 6 Then%>
  <asp:HyperLink ID="HyperLink1" runat="server" navigateUrl='http://www.google.com' Text='Google'></asp:HyperLink>
<%End If%>