Кликабельная ссылка в столбце RadGrid - PullRequest
6 голосов
/ 06 апреля 2010

У меня есть RadGrid, где столбец в сетке содержит URL.Когда положить значение в столбце, я вижу URL, но URL не кликабелен (чтобы перейти к URL).Как сделать URL кликабельным?

Вот пример того, чем я сейчас занимаюсь:

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

Кроме того, мне бы очень хотелось показывать конкретный текст вместоURL.Нечто похожее на <a href="http://www.google.com">Link</a> в HTML.Есть ли в любом случае, чтобы сделать это?

Ответы [ 3 ]

8 голосов
/ 07 апреля 2010

Вы пробовали 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

6 голосов
/ 08 апреля 2010

Добавьте все столбцы вручную на странице 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 голосов
/ 28 ноября 2014

Вам также необходимо проверить правильность типа, как указано ниже;

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