默认SharePoint中的链接字段有很多限制,例如
输入文字的时候只能录入255个字符
链接显示的是文字
点击链接后只能在当前页面打开链接
… … … … … … …… … … … … … …
不过,我们不是可以自己动手不是,看看下面的效果
具体的代码可以在GitHub这里下载,也可以到百度云的这里下载,下面将其中主要的实现点说道说道
结构说明
-
CONTROLTEMPLATES:映射到SharePoint的C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES目录
ImageHyperlinkFieldControl.ascx:自定义列中控件定义描述
-
XML:映射到SharePoint的C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML目录
fldtypes_ImageHyperlinkField.xml:自定义列的显示描述
-
XSL:映射到C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\XSL目录
fldtypes_ImageHyperlinkField.xsl:自定义列在列表中的显示效果描述
- ImageHyperlink.Field.cs:自定义列代码控制,其中GetValidatedString方法用来获取保存到SharePoint中数据的内容
- ImageHyperlink.FieldControl.cs:自定义列内容代码控制,其中OnLoad方法用以控制在显示和编辑自定义列时候的行为
- 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