SharePoint 2013 图文开发系列之WebPart

SharePoint 2013 图文开发系列之WebPart
原文:SharePoint 2013 图文开发系列之WebPart

  这是我们介绍SharePoint开发入门的第一篇,在这一篇里,我们会介绍SharePoint开发的几个关键物理路径,一些开发技巧和最基础的WebPart开发。

开发工具

  在SharePoint 2013开发中,我们使用的是Visual Studio 2012/2013均可,但是VS2012要额外安装Microsoft Office Develop Tools for Visual Studio 2012,可以使用Microsoft Web PlatForm Install进行安装。

几个关键位置

  SharePoint开发中,不仅仅是WebPart,我们都经常会使用的几个关键位置,如下:

GAC:

  C:\Windows\assembly,也就是部署的位置;

ISAPI位置,SharePoint API:

  C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI;

CONTROLTEMPLATES位置,SharePoint控件/模板:

  C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\CONTROLTEMPLATES;

XML位置,SharePoint描述性文件位置:

  C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\XML;

Layouts位置,SharePoint发布页面:

  C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\LAYOUTS;

Feature位置,SharePoint功能部署位置:

  C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\FEATURES;

Images位置,SharePoint图片素材库:

  C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\IMAGES;

LOGS位置,SharePoint日志文件:

  C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\LOGS

WebPart简介

  WebPart,顾名思义就是Web部件的意思,简单理解就是页面上实现一定功能的一个个部分;SharePoint的WebPart,是将应用程序集部署到GAC或者Bin目录下,在Web.Config加入强名称(SharePoint不识别未加强名称的WebPart),下面,我们简单介绍下如何创建一个WebPart。

WebPart创建过程

1、创建项目,项目类型为SharePoint2013空项目,如下图:

clip_image001

2、选择解决方案类型,这里选择场解决方案,如下图:

clip_image002

3、在项目里添加新项,选择Web部件,如下图:

clip_image003

4、添加新项后,项目如下所示:

clip_image004

  如上图,右侧目录包括:一个Feature文件,WebPart文件,强名称;左侧包括,一个创建控件方法,一个输出方法。

5、修改Feature文件,如下图:

clip_image005

6、修改WebPart属性(标题和描述),如下图:

clip_image006

7、添加相应方法的代码,然后部署,如下图:

clip_image007

8、在页面上添加webpart,如下图:

clip_image008

9、添加后,保存页面,如下图:

clip_image009

10、点击Button测试,如下图:

clip_image010

  如上图,点击测试后执行事件,将Label的Text修改了,说明程序执行成功。当然,这仅仅是一个测试WebPart的Demo,你可以写简单的图片轮播部件,复制的逻辑处理部件,都是没有问题的,只是丰富其中的方法罢了。

除了测试Demo,还有几点要说明的是:

  项目文件里CustomWebPart.webpart部署在网站设置,Web部件库,如下图:

clip_image011

WebPart属性面板配置

  当然,我们还可以为WebPart添加右侧的属性面板,方便将来对于WebPart的配置,我们只需要在CustomWebPart.cs文件里面,声明一下变量即可:

private string url = "http://www.cnblogs.com/jianyus";
[WebBrowsable(true)]
[WebDisplayName("Url")]
[WebDescription("This is Site Url...")]
[Category("设置")]
[Personalizable(true)]
public string myurl
{get{return url;}set{url = value;}
}

  声明如下图:

clip_image012

  效果如下图:

clip_image013

  当然,我这里测试是一个单行文本,你可以试试枚举类型(下拉选项),布尔类型(选项)等,只要按照上面的方式声明即可。

  如果,你需要很复杂的属性面板,或者需要带有联动的面板,那么,你可以参考EditorPart或者ToolsPart,在这里不进行深入介绍,我的博客有相关内容的博文,欢迎参考。

  最后,介绍下一个webpart的部署过程,dll文件是部署到GAC或者bin目录下的,如果你需要添加配置文件,可以添加到相关联应用程序(端口下)web.config,然后在webpart里按照.net的方式读取,即可。

  由于本文是开发入门级别的博文,请大神勿喷,如有意见,欢迎在博客后留言进行探讨,特别说一声:谢谢!

  以上,基本就是WebPart开发的基础知识,现在,你可以参照上面,开发一个简单的WebPart练练手了,记得,不要光写代码,要学着思考和理解。

posted on 2015-02-16 11:22 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/4293895.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1363):学生档案信息管理5

service.js //引入http模块 const http require(http); //创建网站服务器 const app http.createServer(); //引入路由 const getRouter require(router); const router getRouter(); const template require(art-template); const path require(path); const serveStat…

mysql c webservice_如何编写webservice c

展开全部采用的工具VS2010生成e69da5e6ba9062616964757a686964616f31333363396337工程1. 生成webservice工程:建 ASP.NET 空WEB 应用程序。2. 在建好的ASP.NET 空WEB应用程序中新建项“web 服务”。完成上述内容工程结构如下图下面主要的操作就是在webservice1.asmx…

mysql优化varchar索引_MySQL优化--概述以及索引优化分析

一、MySQL概述1.1、MySQL文件含义通过如下命令查看show variables like %dir%;MySQL文件位置及含义名称值备注basedir/usr/安装路径character_sets_dir/usr/share/mysql-8.0/charsets/保存字符集目录datadir/var/lib/mysql/数据存放路径lc_messages_dir/usr/share/mysql-8.0/pl…

前端学习(1366):express入门

const express require(express);const app express(); app.get(/, (req, res) > {//send 响应内容的累心//http 状态码res.send(hello geyao); }) app.get(/list, (req, res) > {//send 响应内容的累心//http 状态码res.send({ name: 张三, age: 20 }); }) app.listen…

python中参数传递_python中参数传递

在编程语言中,函数的参数传递有两种情况:按值类型传递num 10def double(arg):argarg*2print(arg)double(num)调用该函数,传入一个变量,其实传入的是该变量的一个副本,该变量在函数中发生变化,不影响函数外…

Hybrid框架UI重构之路:五、前端那点事儿(HTML、CSS)

上文回顾 :Hybird框架UI重构之路:四、分而治之 这里讲述在开发的过程中,一些HTML、CSS的关键点。 单页模式的页面结构在单页模式中,弱化HTML的概念,把HTML当成一个容器,BODY中显示的主体内容才是页面&#…

前端学习(1367):什么是中间件

const express require(express);const app express(); app.get(/request, (req, res, next) > {//send 响应内容的累心//http 状态码req.name 张三;next(); }) app.get(/request, (req, res) > {//send 响应内容的累心//http 状态码res.send(req.name); }) app.liste…

python choose语句作用_理解闭包是如何与变量作用域相互影响的

原文标题:KNOW HOW CLOSURES INTERACT WITH VARIABLE SCOPE比如说你现在想要对一组数字进行排序,同时希望提高一组数字的优先级使这组数字优先显示。这种模式在展示用户接口时非常有用,在展示用户接口时经常需要优先展示一些重要信息以及异常…

前端学习(1368):app.use使用

const express require(express);const app express(); app.use((req, res, next) > {console.log(请求走了use中间件);next(); }) app.use(/request, (req, res, next) > {console.log(请求走了use中间件/hh)next() }) app.get(/list, (req, res) > {//send 响应内…

JDE Client开发端 左侧边栏设置

转载于:https://www.cnblogs.com/GYoungBean/p/4299317.html

insert事务隔离mysql_MySQL数据库详解(三)MySQL的事务隔离剖析

提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱。转账过程具体到程序里会有一系列的操作,比如查询余额…

前端学习(1369):中间件应用

const express require(express);const app express(); app.use((req, res, next) {res.send(网站维护中); }) app.use(/admin, (req, res, next) > {let isLogin false;if (isLogin) {next()} else {res.send(你还没有登录);} }) app.get(/admin, (req, res) > {res.…

前端学习(1370):错误处理中间件

const express require(express);const app express(); app.get(/index, (req, res) > {throw new Error(程序发生了错误);/* res.send(); */ }) app.use((err, req, res, next) > {res.status(500).send(err.message); }) app.listen(3000); console.log(服务器启动成…

前端学习(1372):构建模块化路由

const express require(express);const app express(); //创建路由对象 const home express.Router(); app.use(/home, home); home.get(/index, (req, res) > {res.send(欢迎来到我的页面) }) app.listen(3000); console.log(服务器启动成功); 运行结果

wamp环境搭建到mysql就不成功_Wamp环境搭建常见错误问题解决

第一点、对于apache php mysql 的版本的正确选择问题:网上有些教学视频已经很早了,然后很多人照着来,完全和视频里讲的一样,但是结果就是搭建不成功。出现问题原因:三件套的版本选择不正确,比如有的php版…

前端学习(1373):构建模块化路由2

demo37.js const express require(express);const app express(); const home require(./home); const admin require(./admin);app.use(/home, home); app.use(/admin, admin);app.listen(3000); console.log(服务器启动成功); home.js const express require(express…

前端学习(1374):express参数中get参数的获取

const express require(express);const app express(); app.get(index, (req, res) > {res,end(req.query); })app.listen(3000); console.log(服务器启动成功); 运行结果

前端学习(1375):express参数中post参数的获取

demo39.js const express require(express);const app express(); const bodyParser require(body-parser); //拦截所有请求 //extends:true 方法内部使用第三方模块请求的参数 app.use(bodyParser.urlencoded({ extends: false }))app.post(/add, (req, res) > {res.se…

前端学习(1376):app.use方法

const express require(express);const app express(); const bodyParser require(body-parser); //拦截所有请求 //extends:true 方法内部使用第三方模块请求的参数 app.use(fn({ a: 1 }));function fn(obj) {return function(req, res, next) {if (obj.a 1) {console.log…