默认SharePoint中的链接字段有很多限制,例如

输入文字的时候只能录入255个字符

链接显示的是文字

点击链接后只能在当前页面打开链接

… … … … … … …… … … … … … …

 

不过,我们不是可以自己动手不是,看看下面的效果

 

 

具体的代码可以在GitHub这里下载,也可以到百度云的这里下载,下面将其中主要的实现点说道说道

 

结构说明

  1. CONTROLTEMPLATES:映射到SharePoint的C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES目录

    ImageHyperlinkFieldControl.ascx:自定义列中控件定义描述

  2. XML:映射到SharePoint的C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML目录

    fldtypes_ImageHyperlinkField.xml:自定义列的显示描述

  3. XSL:映射到C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\XSL目录

    fldtypes_ImageHyperlinkField.xsl:自定义列在列表中的显示效果描述

  4. ImageHyperlink.Field.cs:自定义列代码控制,其中GetValidatedString方法用来获取保存到SharePoint中数据的内容
  5. ImageHyperlink.FieldControl.cs:自定义列内容代码控制,其中OnLoad方法用以控制在显示和编辑自定义列时候的行为
  6. ImageHyperlinkValidationRule.cs:(预留扩展)用以添加额外的校验控制逻辑

 

代码说明

如何将很长的链接字符"存入"SharePoint?

参看ImageHyperlink.Field.cs和ImageHyperlink.Field.cs两个文件

两方面:存储的时候将字符串简化;显示的时候又将简化的字符串还原。

简化和还原无非是在外部新建一个数据库的存储表,用以记录长和短字符串的对应关系(当前代码中没有实现);

不过,有一个方法(MakeTinyUrl)也可以参考,使用的是tinyurl.com网站提供的服务,可以将长链接发送给网站,网站返回一个短链接。

 

如何显示图片及新开一个页面?

参看fldtypes_ImageHyperlinkField.xsl文件

这个更加简单,就在XSL文件中修改以下两处即可

<a
href="{$url}"
target="_blank">

<img
src="{$desc}"
style="border:none"/>

 

打完收工!

 

Andy Yang

2015.12.21

扩展SharePoint链接字段的更多相关文章

  1. 自定义和扩展 SharePoint 2010 Server 功能区

    了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...

  2. php使用mysql扩展库链接mysql数据库(查询)

    php链接数据库可以使用mysql扩展库,mysqli,pdo这几种方式,相比java而言要麻烦一点,因为它不像java那么统一.从代码的难易程度来说php的确要简单许多.步骤大体如下 1.打开数据库 ...

  3. SharePoint 2013 字段属性之JSLink 转载来源(http://www.cnblogs.com/jianyus/p/3544482.html)

    在SharePoint 2013中,SPField新增加了一个属性是JSLink,使用客户端脚本修改字段前台展示,我们可以用很多方法修改这个脚本的引用,然后来修改脚本,下面,我们举一个简单的例子. 具 ...

  4. SharePoint 2013 字段属性之JSLink

    在SharePoint 2013中,SPField新增加了一个属性是JSLink,使用客户端脚本修改字段前台展示,我们可以用很多方法修改这个脚本的引用,然后来修改脚本,下面,我们举一个简单的例子. 具 ...

  5. Sharepoint更新字段触发工作流(无代码)

    项目背景 Sharepoint 2010 ,Infopath 2010环境,用Infopath设置好表单把数据提交到Sharepoint的Library库.很常见的需求,其中有一个[状态]字段,和[申 ...

  6. SharePoint 查找字段内部名称的小方法

    今天逛博客园,偶然看到了下面的文章,介绍不用工具查看SharePoint字段内部名称,也介绍下自己的小方法. http://www.cnblogs.com/sunjunlin/archive/2012 ...

  7. EF扩展 更新指定字段

    using System.Data.Entity.Infrastructure; using System.Threading.Tasks; /// <summary> /// EF扩展 ...

  8. sharepoint 自定义字段实现省市联动

    最后实现效果如下:设置栏如下:解决方案结构如下: fldtypes_RoyCustomField.xml 内容如下: <?xml version="1.0" encoding ...

  9. form 组件如何扩展user的字段

    第一步 先将一个包引进来 第二步创建一个类加入你想要的字段

随机推荐

  1. 如何使用MVC编写Winform程序代码

    efwplus开源框架官网:www.efwplus.cn 前提:业务分析设计已完成,界面设计完成   1.代码结构划分 1)界面层:FrmSugeryApplyList.ISugeryApplyLis ...

  2. java 动态创建数据库和动态连接数据库

    项目中有一个需求要动态创建数据库并且要动态连接数据库,本来以为还很难实现呢,在网上找了好久,都不是很理想,最后看到有人说创建数据库时,先连接到任意一个数据库,获得连接后用createStatement ...

  3. 实现一个 Variant

    很多时候我们希望能够用一个变量来保存和操作不同类型的数据(比如解析文本创建 AST 时保存不同类型的结点),这种需求可以通过继承来满足,但继承意味着得使用指针或引用,除了麻烦和可能引起的效率问题,该做 ...

  4. 解决mysql“Access denied for user 'root'@'localhost'”

    解决mysql“Access denied for user 'root'@'localhost'” 分类: linux 2011-01-14 00:23 147547人阅读 评论(3) 收藏 举报 ...

  5. 移除了css框架,世界干净了

    在之前的webapp项目里,我使用了bootstrap作为三方的css库,只调取了其中一部分源码的less使用,大部分代码仍然是自己写的. 自己的代码也是参照bootstrap的目录结构和它的一些规范 ...

  6. [git]通过commit_id找回文件

    git checkout commit_id 这样会切换到这个commit_id的上,文件的内容就是这个commit保存的内容. git checkout -b new_branch_name com ...

  7. FUNCS.H中的函数声明

    /***************************************************************************                         ...

  8. Tools Function

    public static void TraceLog(string message, string logFileName) { string tmppath = AppDomain.Current ...

  9. Java向前引用容易出错的地方

    所谓向前引用,就是在定义类.接口.方法.变量之前使用它们,例如, class MyClass { void method() { System.out.println(myvar); } String ...

  10. sprint3(第二天)

    今天完成的任务有统计用户,全局管理员可以对员工或者用户设置权限. 燃尽图