为 HyperLinkCellType 添加链接参数

本文通过代码描述了如何为 HyperLinkCellType 添加链接参数

发布于 2012/11/14 00:00

在某些情况下我们会将Spread中某一列的单元格类型设置为 超链接(HyperLinkCellType ),并指定相应的 URL 地址(如: http://gcdn.grapecity.com ),然后会给 Spread 绑定数据源。

此时,我们会发现 HyperLinkCellType  所在的列,每个单元格的超链接地址都是指向同一个链接地址,有时候我们希望每个单元格的 URL 是不一样的,比如每个单元格 URL 中会带一个参数(如:http://gcdn.grapecity.com?id=100),类似这样的需求我们可以通过自定义的 HyperLinkCellType  类型来实现我们的需求,代码如下:

 

  • C#
 
[Serializable]
    public class MyHyperLinkCellType : FarPoint.Web.Spread.HyperLinkCellType
    {
        public override Control PaintCell(string id, TableCell parent, FarPoint.Web.Spread.Appearance style, FarPoint.Web.Spread.Inset margin, object value, bool upperLevel)
        {
            if (value != null)
            {
                HyperLink hl = base.PaintCell(id, parent, style, margin, value, upperLevel) as HyperLink;
                hl.Target = Target;
                hl.NavigateUrl = NavigateUrl + "?id=" + value.ToString();
                
                return hl;

            }
            else {
                return base.PaintCell(id, parent, style, margin, value, upperLevel);
            }
        }
    }
复制代码

 

  • VB.NET
 
<Serializable> _
Public Class MyHyperLinkCellType
    Inherits FarPoint.Web.Spread.HyperLinkCellType
    Public Overrides Function PaintCell(id As String, parent As TableCell, style As FarPoint.Web.Spread.Appearance, margin As FarPoint.Web.Spread.Inset, value As Object, upperLevel As Boolean) As Control
        If value IsNot Nothing Then
            Dim hl As HyperLink = TryCast(MyBase.PaintCell(id, parent, style, margin, value, upperLevel), HyperLink)
            hl.Target = Target
            hl.NavigateUrl = NavigateUrl & "?id=" & value.ToString()


            Return hl
        Else
            Return MyBase.PaintCell(id, parent, style, margin, value, upperLevel)
        End If
    End Function
End Class
复制代码

使用自定义的 MyHyperLinkCellType  类型:

 
protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            return;
        }

        MyHyperLinkCellType hlct = new MyHyperLinkCellType();
        hlct.NavigateUrl = "http://gcdn.grapecity.com/index.aspx";
        hlct.Target = "blank";

        hlct.ShowEllipsis = true;
        FpSpread1.ActiveSheetView.Columns[1].CellType = hlct;

        DataTable dt = new DataTable();

        dt.Columns.Add("Col1");
        dt.Columns.Add("Col2");
        dt.Columns.Add("Col3");

        dt.Rows.Add(1, 1, 3);
        dt.Rows.Add(1, 2, 3);
        dt.Rows.Add(1, 3, 3);
        dt.Rows.Add(1, 4, 3);
        dt.Rows.Add(1, 5, 3);

        FpSpread1.ActiveSheetView.DataAutoCellTypes = false;
        FpSpread1.ActiveSheetView.DataSource = dt;
            
    }
复制代码

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态