【问题标题】:Clickable link in RadGrid columnRadGrid 列中的可点击链接
【发布时间】:2011-02-04 23:24:21
【问题描述】:

我有一个 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。类似于 HTML 中的<a href="http://www.google.com">Link</a>。有没有办法做到这一点?

【问题讨论】:

    标签: telerik radgrid


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在 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";
      }
      

      【讨论】:

      • 这行 GridTableCell linkCell = (GridTableCell)item["TemplateLinkColumn"]; 给了我空指针异常
      • 设置reportLink的行中的小错字:应该只是HyperLink reportLink = (HyperLink)linkCell.FindControl("Link");
      【解决方案3】:

      您尝试过 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

      【讨论】:

      • 谢谢 Michael,是否可以像这样使用 javascript onclick 事件:
      • Ajax,高级函数
    • 我喜欢点击
    • 猜你喜欢
      相关资源
      最近更新 更多
      热门标签