SharePoint 部件通过EditorPart自定义属性面板
需求:编写一个新闻展示的WebPart,要求可以分类,类别是从WebService中获取的字符串,要求可以在属性中勾选分类,显示该分类的信息,分类可能会增加。我要做的就是动态生成属性中的新闻类别,至于新闻展示就很简单了。
首先,新建一个WebPart的类,然后添加引用,添加强命名,修改输出路径到bin下,然后加到网站中,引用进去,方便查看效果。
然后,添加另一个类,EditorPart类,我们要做的,就是生成我们的控件,然后重写EditorPart的两个方法,来把类别输出到SharePoint属性面板中去。
protected override void CreateChildControls()//初始化控件 public override bool ApplyChanges()//保存设置 public override void SyncChanges()//初始化EditorPart |
protected override void CreateChildControls()//初始化控件
这个函数,是初始化控件的,编写方法,我们需要的控件,我这里只是需要CheckBox做勾选,还有一个Button做全选。
protected override void CreateChildControls() { string type = GetTypeStr(); string[] type2 = type.Split(';'); typecount = type2.Length; Table table = new Table(); table.CellPadding = 0; table.CellSpacing = 0; table.Style.Add(HtmlTextWriterStyle.Height, "190px"); table.Style.Add(HtmlTextWriterStyle.Width, "200px"); TableRow row = new TableRow(); TableCell cell1 = new TableCell(); TableCell cell2 = new TableCell(); for (int i = 0; i < type2.Length; i++) { cb[i] = new CheckBox(); cb[i].Text = type2[i]; this.Controls.Add(cb[i]); row = new TableRow(); cell1 = new TableCell(); cell2 = new TableCell(); cell1.Style.Add(HtmlTextWriterStyle.TextAlign, "left"); cell1.Controls.Add(cb[i]); row.Cells.Add(cell1); table.Rows.Add(row); } btn.Click += new EventHandler(btn_Click); btn.Text = "全选"; this.Controls.Add(btn); row = new TableRow(); cell1 = new TableCell(); cell2 = new TableCell(); cell1.Style.Add(HtmlTextWriterStyle.TextAlign, "left"); cell1.Controls.Add(btn); row.Cells.Add(cell1); table.Rows.Add(row); this.Controls.Add(table); } |
public override bool ApplyChanges()//保存设置
这个函数,是保存我们的变量的,但是需要把要保存的值回传到属性中去,才可以保存,也就是说EditorPart只有一个编辑功能,所以我在属性中声明了一个string类型的Test变量,用来保存。This也就是EditorPart中的参数,而生成的webpart对象,则是属性了。
public override bool ApplyChanges() { this.EnsureChildControls(); MyTestWebPart webpart = this.WebPartToEdit as MyTestWebPart; if (webpart == null) return false; webpart.Test = ""; for (int i = 0; i < this.typecount; i++) { if (this.cb[i].Checked == true && this.cb[i] != null) { webpart.Test += "1;"; } else { webpart.Test += "0;"; } } return true; //throw new NotImplementedException(); } |
public override void SyncChanges()//初始化EditorPart
这个和上面的函数,作用是相反的,也就是EditorPart读取到部件属性的函数,我读取到我的Test变量,然后通过这个变量,再初始化EditorPart的选项,使看起来EditorPart保存了设置一样。
public override void SyncChanges() { EnsureChildControls(); MyTestWebPart webpart = this.WebPartToEdit as MyTestWebPart; if (webpart == null) return; string GetTest = webpart.Test; string[] GetTestGroup = GetTest.Split(';'); for (int i = 0; i < GetTestGroup.Length; i++) { if (GetTestGroup[i] == "1") { cb[i].Checked = true; } } } |
最后,在WebPart中获得编辑界面就可以了。这个就是在部件的属性面板中,初始化EditorPart的函数了,Title也就是属性的标题了。
public override EditorPartCollection CreateEditorParts() { EditorPartCollection baseParts = base.CreateEditorParts(); List<EditorPart> editorParts = new List<EditorPart>(1); EditorPart part = new MyTestEditerPart(); part.ID = this.ID + "_tagValueEditor"; part.Title = "新闻类别"; editorParts.Add(part); return new EditorPartCollection(baseParts, editorParts); } |
声明了一个Test的变量,用来保存EditorPart的值,然后Browsable设置成了false,不让用户看到。呵呵。
private string _Test = ""; [Browsable(false), FriendlyName("textbox类别"), Category("设置"), Description("请输入类别"), DefaultValue(""), WebPartStorage(Storage.Shared)] public string Test { get { return _Test; } set { _Test = value; } } |
效果:如下图所示,新闻类别,然后可以类别全选或者取消全选。
部件展示效果:[现在是勾选那个分类,页面上显示那个分类]
*************************************************************************************
作者:霖雨 出处:http://www.cnblogs.com/jianyus 本文版权归 霖雨和博客园共有,欢迎转载,但请注明出处。
SharePoint 部件通过EditorPart自定义属性面板的更多相关文章
- 在SharePoint中创建可自定义属性的文件夹
概况 阅读时间:约5分钟 适用版本:SharePoint Server 2010及以上 面向用户:普通用户.管理员.开发人员 难度指数:★★★☆☆ SharePoint中的文件夹分为2种,一种是文档库 ...
- sharepoint部件webparth关闭找回的方法
- Sharepoint商务智能学习笔记之PowerPviot Service安装与配置(七)
1) PowerPviot Service多服务器部署注意事项 PowerPviot Service不是Sharepoint自带的服务,要想使用PowerPviot Service需要先在sharep ...
- SharePoint代码段设计
参考文章: 1. SharePoint 2013设计管理器代码段 https://msdn.microsoft.com/zh-cn/library/jj822367 2. 如何在SharePoint中 ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 处理开发者需求
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 处理开发者需求 SharePoint本质上是一个平台.你 ...
- Axure基础系列教程
Axure rp 6.5的软件安装.汉化与注册 认识Axure的软件界面 生成网页原型的三种方法 如何关闭IE浏览器在生成原型时候的安全警告 在chrome中使用axure生成原型的问题 站点地图 ...
- 从零开始学Axure原型设计(进阶篇)
Axure不仅能制作静态的视觉稿.页面,还能添加交互动作,是进行原型设计的最佳软件之一.在认识了Axure的界面和部件库之后,我们可以用它来画线框图了,但是静态的线框图在表达上不如有交互的原型图来得直 ...
- unity UGUI实现类似NGUI切换Sprite的方式
很多都是使用NGUI的习惯,因为在NGUI中所有图片都打包在一个图集中,通过更改SpriteName就可以更改图片,so,为了方便调用UGUI的sprite,我们也同样需要为其创建一个asset文件. ...
- 【翻译】Ext JS 5的平板支持
原文:Ext JS 5 Tablet Support Ext JS已被公认为桌面Web应用程序的领先框架.自从平板开始在全球挑战PC的销售,无论是个人还是企业,电脑横向的应用已经产生急剧的变化.Sen ...
随机推荐
- FORM当前状态分析
变量 SYSTEM.RECORD_STATUS 确定当前记录状态.有四种返回值:CHANGED表示记录从数据库取来,并且该记录至少一个基表列被更新:INSERT表示给一个非取自数据库记录的基表 ...
- 学习TensorFlow,打印输出tensor的值
在学习TensorFlow的过程中,我们需要知道某个tensor的值是什么,这个很重要,尤其是在debug的时候.也许你会说,这个很容易啊,直接print就可以了.其实不然,print只能打印输出sh ...
- Python读取JSON数据,并解决字符集不匹配问题
今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子. – 思路如下 从一个返回JSON天气数据的网站获取到目标JSON数据串 使用Python解析出需要的部分 写入到本地文件,供其 ...
- Servlet之文件上传
上传表单中的注意事项: 表单 method 属性应该设置为 POST 方法,不能使用 GET 方法 表单 enctype 属性应该设置为multipart/form-data 下面的实例是借助于com ...
- Android Demo 下拉刷新+加载更多+滑动删除
小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第 ...
- 【一天一道LeetCode】#344. Reverse String
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二十)
接上一篇文章,我们现在来实现篮框的感应器. 所谓感应器,就是在物体接触到的时候做出反应的节点.我们需要将感应器放在篮框底部,这样子弹接触感应器的时候,我们就知道子弹坠入了篮框,从而得分. 为了放置子弹 ...
- 【FPGA学习】Verilog之加法器
在fpga工程应用设计中,随处可见加法器,乘法器等等.现在将一些常用模块和心得体会先记录下来,以便日后使用. 一位半加器: module halfadder(cout,sum,a,b); output ...
- Linux C 下的大文件操作
这里说的大文件指大小超过4G的文件. 在32位环境下,linux默认打开.读.写超过4G的文件会返回错误.定义如下宏可以突破这个限制,对read/write和fread/fwrite同时有效. 注意它 ...
- C语言头文件和库的一些问题
使用gcc的编译器 头文件没有包含stdlib.h,使用atoi函数(atoi函数在stdlib.h中才有声明),编译却没有出错如果编译的时候加上-Wall选项,会有个警告,请问这是为什么? 这是因为 ...