2010-04-06 54 views
6

我有一个RadGrid,网格中的一列包含一个URL。当在列中放置一个值时,我可以看到URL,但URL不可点击(转到URL)。我怎样才能让URL可点击?RadGrid列中的可点击链接

这里是什么,我现在在做一个粗略的例子:

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

此外,我真的很想表现出特定的文本,而不是URL。类似于HTML中的<a href="http://www.google.com">Link</a>。无论如何要做到这一点?

回答

6

手动添加的所有列在ASCX页面,并要包含的超链接的GridTemplateColumn列:

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

确保网格有一个OnItemDataBound方法:

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

在您的OnItemDataBound方法中将字段设置为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

>中点击此项它在此行中给出空指针异常GridTableCell linkCell =(GridTableCell)item [“TemplateLinkColumn”]; – 2011-10-29 10:31:17

+0

设置reportLink的行中的小错字:应该只是 HyperLink reportLink =(HyperLink)linkCell.FindControl(“Link”); – 2015-01-06 22:17:03

8

您是否尝试过GridHyperLinkColumn?下面是一个详细的例子。

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

您也可以查看demosite以了解它是如何工作的。 http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/columntypes/defaultcs.aspx

+0

感谢迈克尔,是否有可能使用JavaScript onclick事件像: Ajax,高级函数 – Sensa 2012-05-15 14:49:12

+0

我喜欢在 Sensa 2012-05-15 14:49:49

0

您还需要检查正确的类型,如下所示;

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