2010-04-06 30 views
6

Tengo un RadGrid donde una columna en la cuadrícula contiene una URL. Cuando pongo un valor en la columna, puedo ver la URL pero no se puede hacer clic en la URL (para ir a la URL). ¿Cómo puedo hacer que la URL se pueda hacer clic?Enlace que hace clic en la columna RadGrid

Aquí está un ejemplo aproximada de lo que estoy haciendo ahora:

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

Además Realmente me gustaría que el texto específico en lugar de la URL. Algo similar a <a href="http://www.google.com">Link</a> en HTML. ¿Hay alguna forma de hacer esto?

Respuesta

6

Agregar todas las columnas de forma manual en la página ascx y crea la columna que desea que contenga el hipervínculo una GridTemplateColumn:

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

Asegúrese de que la rejilla tiene un método OnItemDataBound:

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

En su método OnItemDataBound, establezca el campo en la 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

Me da excepción de puntero nulo en esta línea GridTableCell linkCell = (GridTableCell) item ["TemplateLinkColumn"]; –

+0

Pequeño error en la línea que establece reportLink: debería ser HyperLink reportLink = (HyperLink) linkCell.FindControl ("Enlace"); –

8

¿Has probado la GridHyperLinkColumn? A continuación se muestra un ejemplo detallado.

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

También puede ver el demos para ver cómo funciona. http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/columntypes/defaultcs.aspx

+0

Gracias Michael, ¿es posible el uso de evento onclick javascript como como:

  • Ajax, funciones avanzadas
  • Sensa

    +0

    Me gusta tener esto al hacer clic en Sensa

    0

    También necesitará verificar el tipo correcto, de la siguiente manera;

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