在SharePoint 2013中使用JSLink + Callout 展示信息(1)
来源:互联网 发布:linux如何查看登录情况 编辑:程序博客网 时间:2024/06/07 03:26
我们知道SharePoint 2013提供了一个新功能,即使用JSLink来改变列表中字段的显示方式。下面就写一个简单的自定义字段,并使用JSLink来改变字段的显示方式。
第一步,打开VS 2012,创建一个solution,添加一个SharePoint project,添加一个feature,取名为FlyingField:
第二步,添加“CONTROLTEMPLATES”这个mapping folder,在其中定义User Control “FlyingFieldUserControl.ascx” 来提供模板:
<SharePoint:RenderingTemplate ID="FlyingFieldRenderingTemplate" runat="server"> <Template> <asp:TextBox runat="server" ID="txtValue"></asp:TextBox> </Template></SharePoint:RenderingTemplate>模板非常简单,只有一个文本框,相应后台代码:
public partial class FlyingFieldUserControl : BaseFieldControl { protected TextBox txtValue; protected override string DefaultTemplateName { get { return "FlyingFieldRenderingTemplate"; } } public override object Value { get { EnsureChildControls(); return txtValue; } set { try { EnsureChildControls(); txtValue.Text = value.ToString(); } catch { } } } protected override void CreateChildControls() { if (Field == null) return; base.CreateChildControls(); if (ControlMode == SPControlMode.Display) return; txtValue = (TextBox)TemplateContainer.FindControl("txtValue"); if(ControlMode == SPControlMode.New) { txtValue.Text = ""; } } }
第三步,添加一个文件FlyingField.cs,定义FlyingField这个自定义的栏(继承自SPFieldText类):
public class FlyingField : SPFieldText { public FlyingField(SPFieldCollection fields, string fieldName) : base(fields, fieldName) { } public FlyingField(SPFieldCollection fields, string typeName, string displayName) : base(fields, typeName, displayName) { } public override BaseFieldControl FieldRenderingControl { get { BaseFieldControl fieldControl = new FlyingFieldUserControl(); fieldControl.FieldName = this.InternalName; return fieldControl; } } public override string JSLink { get { return "/_layouts/15/FlyingField/scripts/flyscript.js"; } set { base.JSLink = value; } } }
这里重写了JSLink这个属性,其指向的js文件稍后会详细介绍。
第四步就是添加自定义栏的xml文件fldtypes_custom.xml,其中指定一些属性:
<?xml version="1.0" encoding="utf-8"?><FieldTypes> <FieldType> <Field Name="TypeName">FlyingField</Field> <Field Name="ParentType">Text</Field> <Field Name="TypeDisplayName">Flying Field</Field> <Field Name="TypeShortDescription">Flying Field Description</Field> <Field Name="UserCreatable">TRUE</Field> <Field Name="ShowOnListCreate">TRUE</Field> <Field Name="ShowOnSurveyCreate">TRUE</Field> <Field Name="ShowOnDocumentLibrary">TRUE</Field> <Field Name="ShowOnColumnTemplateCreate">TRUE</Field> <Field Name="Sortable">TRUE</Field> <Field Name="Filterable">TRUE</Field> <Field Name="FieldTypeClass">FlyingField.FlyingField, FlyingField, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b9fef60d81126a0e</Field> <Field Name="SQLType">nvarchar</Field> </FieldType></FieldTypes>注意请修改PublicKeyToken的值。
最后一步添加JSLink使用的文件“flyscript.js”:
(function() { var fieldJsLinkOverride = { }; fieldJsLinkOverride.Templates = { }; fieldJsLinkOverride.Templates.Fields = { 'FlyingField': { 'View': GetFlyingCallout } }; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(fieldJsLinkOverride);})(); function GetFlyingCallout(ctx) { var flyValue = ctx.CurrentItem.fly; return "test - " + flyValue;}
请注意这行代码:
return "test - " + flyValue;就是将自定义栏的值,加上了“test -”前缀并返回,于是在list中,自定义栏的值都会加上这个前缀。
所以这个solution的结构应该是:
部署之后,就可以使用这个自定义栏了。将这个栏添加到list中去,并在list中添加一个item的结果如下:
可以看到,fly的值加上了“test -”前缀。因此只要我们修改方法“GetFlyingCallout”就可以随意改变自定义栏的展示方式了。
以上就是在自定义栏中使用JSLink的方法,现在可以抛弃SharePoint 2007和2010中使用的xsl的方法来修改字段的展示方式了,使用JSLink大大简化了工作,使我们可以使用js自定义展示方式,非常方便。下一篇会结合JSLink和SharePoint的另一个新功能Callout来开发另一种自定义栏。
0 0
- 在SharePoint 2013中使用JSLink + Callout 展示信息(1)
- 在SharePoint 2013中使用JSLink + Callout 展示信息(2)
- 在SharePoint 2013中创建并使用Callout
- SharePoint 2013 中使用JSLink 来改变列表中某个字段或view(视图)的显示方式
- SharePoint 2013 字段属性之JSLink
- Sharepoint JSLink MultiString
- 在SharePoint中使用EventHandler。
- 在SharePoint中使用LINQ
- SharePoint中使用Visio Service展示业务数据
- JSLink文件中使用field的自定义属性
- 【ArcGIS for Android】使用自定义Callout显示地图信息
- SharePoint JS Link 之( 三)如何设置JSLink的引用
- SharePoint JS Link 之(四)JSlink常见例子和代码下载
- SharePoint JS Link 之(五)关于JSLink的一些FAQ
- sharepoint JSLink 改变列表字体颜色
- Sharepoint 2013 如何使用 Metadata 及效果展示
- 在SharePoint 2013 中使用UpdatePanel控件进行局部刷新
- 在 SharePoint 2013中使用 RelatedItems 列(Site column)
- ntp服务器搭载
- 史上最经典Java入门基础视频,没有之一!
- 线程同步:何时互斥锁不够,还需要条件变量?
- 成员变量和静态变量的区别?
- 经纬财富:丹东非农巧操作,翻仓如此简单
- 在SharePoint 2013中使用JSLink + Callout 展示信息(1)
- Linux 防止多重定义
- JQuery Kendo UI运用技巧总结
- ZK编程 - 创建节点+watcher
- POJ 1321 棋盘问题
- Android中的五大存储
- 在访问者模式中使用反射
- cocos2dx CCTransitionScene框架分析
- ios 中计时器的使用方式