博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SharePoint 用SafeControl的方式创建能够重复利用的Control
阅读量:6138 次
发布时间:2019-06-21

本文共 4224 字,大约阅读时间需要 14 分钟。

1):假设我们有这样一个场景,我们为不同组的pages定义了不同的Layout,并且我们要在每个Layout中放置不同的可以修改Footer信息。

2):这里的实现方式是创建一个List,然后在List中添加不同的Item,每个Item包含Layout中的Footer信息,然后在SharePoint 中用SafeControl的方式创建能够重复利用的Control。

如下为具体实现方式:

1):创建Control,这里定义了一些参数,指定从哪个List中的哪个Item的哪个Field中获取信息

using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Microsoft.SharePoint;namespace EricSunProject.WebParts.WebControls{    [DefaultProperty("ListName")]    [ToolboxData("<{0}:FnxDisclosureControl runat=server>
")] public class FnxDisclosureControl : WebControl { /// /// The name of the disclosure list /// [Bindable(true)] public string ListName { get { String s = (String)ViewState["ListName"]; return ((s == null) ? String.Empty : s); } set { ViewState["ListName"] = value; } } /// /// The key field name to retrieve the disclosure text /// [Bindable(true)] public string DisclosureField { get { String s = (String)ViewState["DisclosureField"]; return ((s == null) ? String.Empty : s); } set { ViewState["DisclosureField"] = value; } } /// /// The disclosure text field name /// [Bindable(true)] public string DisclosureTextField { get { String s = (String)ViewState["DisclosureTextField"]; return ((s == null) ? String.Empty : s); } set { ViewState["DisclosureTextField"] = value; } } /// /// The unique disclosure key value /// [Bindable(true)] public string DisclosureUniqueName { get { String s = (String)ViewState["DisclosureUniqueName"]; return ((s == null) ? String.Empty : s); } set { ViewState["DisclosureUniqueName"] = value; } } protected override void CreateChildControls() { base.CreateChildControls(); if (!string.IsNullOrEmpty(this.DisclosureUniqueName) && !string.IsNullOrEmpty(this.ListName) && !string.IsNullOrEmpty(this.DisclosureField) && !string.IsNullOrEmpty(this.DisclosureTextField)) { SPWeb rootWeb = SPContext.Current.Site.RootWeb; if (rootWeb != null) { SPList disclosureList = rootWeb.Lists[this.ListName]; if (disclosureList != null) { SPQuery query = new SPQuery(); query.Query = string.Format("
{1}
", this.DisclosureField, this.DisclosureUniqueName); SPListItemCollection items = disclosureList.GetItems(query); if (items.Count > 0) { SPListItem contentItem = items[0]; // query should only return 1 item. string htmlContent = contentItem != null ? contentItem[this.DisclosureTextField] as string : string.Empty; this.Controls.Add(new Literal() { Text = htmlContent }); } } } } } }}

 

2):在package中声明此SafeControl

 

3):在对应的Layout中注册此Control

<%@ Register Tagprefix="EricSunControls" Namespace="EricSunProject.WebParts.WebControls" Assembly="EricSunProject.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1de19275c7811c3b" %>

 

4):应用此Control

 

这样就做到了这个Control可以重复利用,并且只需要改变参数,标识应用哪个List中的哪个Item中的哪个Field,去填充信息。当然了 SharePoint中的Item的值是可以随时修改的,这样后续只需要修改SharePoint中Item对应的Field值,那么我们自定义的Pages就可以随时显示修改后的Footer等信息。

转载地址:http://vbuya.baihongyu.com/

你可能感兴趣的文章
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
阿里云企业邮箱 在Foxmail 7.0上POP3/IMAP协议设置方法
查看>>
Javascript一些小细节
查看>>
canvas学习总结
查看>>
Javascript的if判断
查看>>
spring cloud gateway 源码解析(3)记录请求参数及返回的json
查看>>
阿里云ECS数据盘格式化与挂载图文教程
查看>>
Flexbox响应式网页布局 - W3Schools视频02
查看>>
【手牵手】搭建前端组件库(二)
查看>>
怎么给视频添加音频或配乐
查看>>
怎么转换音乐格式
查看>>
Leaflet-Develop-Guide
查看>>
每隔1s打印0-5
查看>>