2010-01-27 7 views
2

는 내가 첫 번째 행에 표시되지 및Gridview에서 하이퍼 링크 필드의 가시성을 변경하는 방법은 무엇입니까?

볼 수없는 마지막 행의 두 번째 hyperlinkfield의 첫 번째 hyperlinkfield을 만들고 싶어 일부 데이터와 두 개의 hyperlinkfields 와의 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 

첫 번째 하이퍼 링크 필드에서만 작동합니다. 주석을 생략하면 모든 행에서 첫 번째 하이퍼 링크 필드를 볼 수 없게됩니다.

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

답변

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%> 
+0

+1 - 이렇게하는 방법입니다. 뒤에있는 코드로 들어가서 귀찮게하지 마시고, 귀하의 기준에 맞추어 자동 검색하십시오. 보다 복잡한 기준이 필요한 경우 코드 뒤에 공개 메소드를 통해 실행하십시오. –

1

위의 코드를 살펴보면 주석 처리 된 코드의 주석 처리를 제거하면 gridview.Rows.Count가 실행될 때마다 모든 행에서 첫 번째 하이퍼 링크 필드를 볼 수 없다는 것을 언급 한 것처럼 모든 행. GridView1.DataBind()를 호출하는 곳에서 수행해야합니다. 그 문 다음에 전체 행을 확인한 다음 하이퍼 링크를 찾아 비활성화해야합니다. 그렇지 않으면 모든 하이퍼 링크가 모든 행에 대해 실행되고 GridView1.Rows.Count가 변경되는 것처럼 숨겨집니다.

또는

당신은 당신이 DataControlRowType.Footer, DataControlRowType.Pager 행을 확인할 수 있습니다 후 1 또는 2를 substracting하여 마지막 행을 얻을 그리드 뷰의 RowDataBound 이벤트에 그렇게하려면

, 당신의 필요에 대해 말하고 마지막 행을 얻으십시오.

희망이 도움이 될 것입니다.

관련 문제