2009-08-22 8 views
3

J'ai un lien "vue" vers une page aspx dans une grille pour chaque ligne.aller au site externe s'il s'agit d'un lien hypertexte

Selon le type de ressource 1) Fichier ou 2) Lien hypertexte, il faut soit télécharger le fichier ou aller à l'hyperlien mentionné.

<asp:TemplateField HeaderText="View"> 
       <ItemTemplate> 
        <a id="View" href="../resources/ResourceFile.aspx?Id=<%# Eval("Id")%>" target="_blank">View</a> 
       </ItemTemplate> 
    </asp:TemplateField> 

Je l'ai travailler pour le type de fichier, mais comment puis-je rediriger un lien externe comme « www.yahoo.com » si elle est un lien hypertexte.

Dans le code derrière

if(resource.ResourceType.ToLower().Equals("hyperlink")){ 
        // what should i do here? 
       // the link is stored in resource.value 
       } 

EDIT: Figured que le lien doit avoir un préfixe http: // pour travailler. Se sentir stupide maintenant :)

Répondre

5

Figured que le lien doit avoir un préfixe http:// au travail.

3

L'objet ressource a-t-il accès à l'URL vers laquelle vous souhaitez rediriger? Si c'est le cas, vous pouvez utiliser Response.Redirect.

if(resource.ResourceType.ToLower().Equals("hyperlink")){ 
    Response.Redirect(resource.Url); 
} 
+0

yes.it est stocké sous resource.value. – krishna

+0

Excellent, puis Response.Redirect (resource.value); devrait le faire. :) –

+0

@David. Trouvé que la valeur devrait avoir un préfixe http: //. C'était pourquoi ça ne fonctionnait pas pour moi plus tôt. Merci pour votre aide. – krishna

0

Ajoutez un lien hypertexte asp.net au modèle d'élément. Puis gérer l'événement RowDataBound pour modifier dynamiquement la propriété NavigateURL du lien hypertexte. De cette façon, vous évitez le postpack.

<asp:TemplateField HeaderText="View"> 
    <ItemTemplate> 
     <asp:Hyperlink runat="server" id="View" target="_blank">View</a> 
    </ItemTemplate> 
</asp:TemplateField> 

void GridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     HyperLink hl = (HyperLink)e.Row.FindControl("View"); 
     hl.NavigateUrl = "Link to file or url based on resource type"; 
    } 
} 

[http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx][1]

[1]: MSDN Exemple

+0

J'utilise le resourcefile.aspx dans quelques autres endroits. Je mets la logique pour déterminer s'il s'agit d'un fichier ou d'une URL dans le code derrière cette page. Le lien est le même que ce soit un fichier ou une URL – krishna

Questions connexes