2010-06-18 3 views
5

J'ai un problème où mon champ Lien hypertexte dans Asp.net GridView n'accepte pas la fonction Javascript qui va ouvrir une boîte de dialogue contextuelle.Définition de HyperLinkField à un Javascript Url

J'utilise l'extrait suivant

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

Cependant, quand j'utiliser une URL de la page, cela fonctionne, par exemple:

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

Est-il possible que je peux faire ce travail avec mon JavaScript fonction?

Répondre

7

Je pense que vous devez le remplacer par un marqueur normal dans un champ de modèle sans utiliser le champ asp: hyperlink. Ensuite, vous pouvez faire quelque chose comme ceci:

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

Toutes vos asp: attributs de HyperLinkField se placer sur l'étiquette TemplateField.

EDIT

Vous ne pouvez pas placer javascript dans le HyperLinkField, comme cela est by design

1

Vous pouvez également utiliser un champ lié et puis modifier le texte en cas RowDataBound. (Cela permettra EnableSortingAndPagingCallbacks de travailler):

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

Assurez-vous que HtmlEncode est faux!

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