RadGrid列中的可点击链接

时间:2010-04-06 19:39:47

标签: telerik radgrid

我有一个RadGrid,网格中的列包含一个URL。当在列中放置一个值时,我可以看到URL,但URL不可点击(转到URL)。如何使URL可以点击?

这是我现在正在做的一个粗略的例子:

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

此外,我真的想显示特定的文字而不是网址。类似于HTML中的<a href="http://www.google.com">Link</a>。反正有吗?

3 个答案:

答案 0 :(得分: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>

您还可以查看演示文稿以了解其工作原理。 http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/columntypes/defaultcs.aspx

答案 1 :(得分: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";
}

答案 2 :(得分:0)

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

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