2010-04-06 9 views
6

J'ai un RadGrid où une colonne dans la grille contient une URL. Quand un mettre une valeur dans la colonne, je peux voir l'URL, mais l'URL n'est pas cliquable (pour aller à l'URL). Comment puis-je rendre l'URL cliquable?Lien cliquable dans la colonne RadGrid

Voici un exemple approximative de ce que je fais maintenant:

DataTable table = new DataTable(); 
DataRow row = table.Rows[0]; 
row["URL"] = "http://www.google.com"; 
grid.DataSource = table; 

En outre, je voudrais vraiment montrer un texte spécifique au lieu de l'URL. Quelque chose de similaire à <a href="http://www.google.com">Link</a> en HTML. Est-ce qu'il y a un moyen de faire ça?

Répondre

6

Ajouter toutes les colonnes manuellement dans la page ascx et faire la colonne que vous voulez contenir l'hyperlien un GridTemplateColumn:

<telerik:GridTemplateColumn 
    UniqueName="TemplateLinkColumn" 
    AllowFiltering="false" 
    HeaderText="URL"> 
    <ItemTemplate> 
     <asp:HyperLink ID="Link" runat="server"></asp:HyperLink> 
    </ItemTemplate> 
</telerik:GridTemplateColumn> 

Assurez-vous que votre grille a une méthode de OnItemDataBound:

<telerik:RadGrid 
    ID="RadGrid" 
    runat="server" 
    AutoGenerateColumns="False" 
    OnItemDataBound="RadGrid_ItemDataBound" > 

Dans votre méthode OnItemDataBound, définissez le champ sur l'URL:

protected void RadGrid_ItemDataBound(object aSender, GridItemEventArgs anEventArgs) 
{ 
    //Get the row from the grid. 
    GridDataItem item = anEventArgs.Item as GridDataItem; 
    GridTableCell linkCell = (GridTableCell)item["TemplateLinkColumn"]; 
    HyperLink reportLink = (HyperLink)reportLinkCell.FindControl("Link"); 

    // Set the text to the quote number 
    reportLink.Text = "Google"; 

    //Set the URL 
    reportLink.NavigateUrl = "http://www.google.com"; 

    //Tell it to open in a new window 
    reportLink.Target = "_new"; 
} 
+0

Il me donne une exception de pointeur nul dans cette ligne GridTableCell linkCell = (GridTableCell) item ["TemplateLinkColumn"]; –

+0

Petite faute de frappe dans la ligne qui définit reportLink: cela doit simplement être HyperLink reportLink = (HyperLink) linkCell.FindControl ("Link"); –

8

Avez-vous essayé le GridHyperLinkColumn? Voici un exemple détaillé.

<telerik:GridHyperLinkColumn FooterText="HyperLinkColumn footer" DataTextFormatString="Search Google for '{0}'" DataNavigateUrlFields="CompanyName" UniqueName="CompanyName" DataNavigateUrlFormatString="http://www.google.com/search?hl=en&amp;q={0}&amp;btnG=Google+Search" HeaderText="HyperLink<br/>Column" DataTextField="CompanyName"></telerik:GridHyperLinkColumn> 

Vous pouvez également voir le démosite pour voir comment cela fonctionne. http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/columntypes/defaultcs.aspx

+0

Merci Michael, est-il possible d'utiliser javascript événement onclick comme comme:

  • Ajax, Fonctions Avancées
  • Sensa

    +0

    J'aime cliquer ceci dans Sensa

    0

    Vous devrez également vérifier le type correct, comme suit;

    if (anEventArgs.Item.GetType().Name != "GridDataItem") 
    { 
        return; 
    } 
    
    Questions connexes