Установка HyperLinkField в URL-адрес JavaScript - PullRequest
5 голосов
/ 18 июня 2010

У меня проблема с тем, что мое поле гиперссылки в Asp.net GridView не принимает функцию Javascript, которая открывает всплывающее диалоговое окно.

Я использую следующий фрагмент

 <asp:GridView>
     <asp:HyperLinkField
         DataTextField="SomeColumn" HeaderText="Some Column Text"
         SortExpression="SomeColumn"
         HeaderStyle-HorizontalAlign="Left"
         DataNavigateUrlFormatString="javascript:LaunchSomePopupdialog({0})"
         DataNavigateUrlFields="Id"
         ItemStyle-Font-Underline="true" />  
 </asp:GridView>  

Однако, когда я использую URL-адрес страницы, он работает, например:

DataNavigateUrlFormatString="~/SomeOtherPage.aspx?Id={0}"

Есть ли способ заставить эту работу работать с моей функцией JavaScript?

Ответы [ 2 ]

7 голосов
/ 18 июня 2010

Я думаю, вы должны изменить его на обычный тег внутри поля шаблона без использования поля asp: hyperlink. Тогда вы можете сделать что-то вроде этого:

<asp:TemplateField HeaderText="Some Column Text" ItemStyle-Font-Underline="true">
    <ItemTemplate>
<a href="#" onclick="javascript:LaunchYourStuff('<%#Eval("YourColumnID")%>')"><%#Eval("YourColumnDisplayText")%></a>
     </ItemTemplate>
</asp:TemplateField>

Все ваши атрибуты asp: hyperlinkfield помещаются в тег templateField.

EDIT

Вы не можете поместить javascript в поле гиперссылки, так как это по проекту

1 голос
/ 22 сентября 2015

Вы также можете использовать связанное поле, а затем изменить текст в событии RowDataBound.(Это позволит EnableSortingAndPagingCallbacks работать):

<asp:BoundField DataField="ID" HtmlEncode="False" />

Убедитесь, что HtmlEncode имеет значение false!

Protected Sub gv_RowDatabound(sender As Object, e As GridViewRowEventArgs) Handles gv.RowDataBound
    If e.Row.RowType <> DataControlRowType.DataRow Then
        Return
    End If
    Dim drv = TryCast(e.Row.DataItem, DataRowView)
    If drv Is Nothing Then
        Throw New Exception("drv is nothing")
    End If
    Const detailsCol As Integer = 4
    e.Row.Cells(detailsCol).Text = String.Format("<a href='javascript:popUp(""Details.aspx?ID={0}"");'>Details</a>", drv("ID"))
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...