我有一个包含一些数据和两个超链接字段的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
这仅适用于第一个超链接字段。 省略注释将使第一个超链接字段对所有行都不可见。
感谢任何帮助。 提前致谢。
答案 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%>