代码之家  ›  专栏  ›  技术社区  ›  Abu Muhammad

如何更改网格视图中超链接字段的可见性?

  •  2
  • Abu Muhammad  · 技术社区  · 14 年前

    我有一个包含一些数据和两个超链接字段的网格视图 我想使第一行的第一个超链接字段不可见 最后一行的第二个超链接字段不可见

    直到现在我都这么做了

    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 回复  |  直到 14 年前
        1
  •  1
  •   Jason Butler    14 年前

    如果可见性基于数据值,则可以使用超链接对象中的“可见”属性。

               <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语句来显示超链接。

    <%If Session("Access") > 6 Then%>
      <asp:HyperLink ID="HyperLink1" runat="server" navigateUrl='http://www.google.com' Text='Google'></asp:HyperLink>
    <%End If%>
    
        2
  •  1
  •   Asim Sajjad    14 年前

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

    如果要在网格视图的rowdatabound事件中执行此操作,则可以检查 DataControlRowType.Footer、DataControlRowType.Pager行,然后根据需要减去1或2以获取最后一行,并获取最后一行。

    希望能有所帮助。