Как изменить видимость поля гиперссылки в виде сетки? - PullRequest
2 голосов
/ 27 января 2010

У меня есть сетка с некоторыми данными и двумя гиперссылками Я хочу, чтобы первое поле гиперссылки в первом ряду не было видно а второе поле гиперссылки последней строки не видно

это то, что я делал до сих пор

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 ]

1 голос
/ 28 января 2010

Если видимость основана на значении данных, вы можете использовать атрибут Visible в объекте HyperLink.

           <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>

Вы также можете использовать оператор if внутри файла aspx для отображения HyperLink.

<%If Session("Access") > 6 Then%>
  <asp:HyperLink ID="HyperLink1" runat="server" navigateUrl='http://www.google.com' Text='Google'></asp:HyperLink>
<%End If%>
1 голос
/ 27 января 2010

Посмотрев на приведенный выше код, вы упомянули, что когда вы раскомментируете закомментированный код, это сделает первое поле гиперссылки не видимым для всех строк, так как gridview.Rows.Count меняется, так как запускается для каждого строка. Вы должны попытаться сделать это там, где вы вызываете GridView1.DataBind (), то есть после этого оператора вы должны проверить общее количество строк, а затем найти гиперссылку и отключить ее. в противном случае он будет скрывать все гиперссылки в качестве стрельбы для каждой строки, а GridView1.Rows.Count изменяется.

OR

Если вы хотите сделать это в событии RowDataBound вида сетки, вы можете проверить наличие DataControlRowType.Footer, DataControlRowType.Pager, а затем получите последнюю строку, вычтя 1 или 2, в зависимости от ваших потребностей, и получите последнюю строку.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...