Fork me on GitHub
摘要: 这是一篇对之前 《利用AutoSPSourceBuilder和Autospinstaller自动安装SharePoint Server 2013图解教程——Part 2》的补充。本篇博客将对AutoSPSourceBuilder的使用进行说明。AutoSPSourceBuilder介绍下载AutoSPSourceBuilder点击进入AutoSPSourceBuilder的官网,找到最新版本,然后下载。解压后文件夹内包含两个文件:AutoSPSourceBuilder.ps1为我们需要运行的PowerShell 脚本(用于下载资源),而AutoSPSourceBuilder.xml中则包含了需 阅读全文
posted @ 2013-11-21 17:58 木宛哥说编程 阅读(1366) 评论(0) 推荐(0) 编辑
摘要: 对于SharePoint Developers来说,往往会过多的去关注SharePoint平台和工具,而把设计模式和代码的可测试性放在了一个较低的优先级。这并不是说SharePoint Developers对设计模式不感兴趣,而是缺乏在SharePoint平台下使用设计模式的经验。所以本篇Blog正如题目所示:探索MVP(Model-View-Presenter)设计模式在SharePoint平台下的实现。利用MVP设计模式,可以尽量让我们的项目分离关注点、易测试、可重用。在实现MVP时,我也会加入Repository和Service Locator这两种设计模式,Repository可以理解 阅读全文
posted @ 2013-10-29 21:25 木宛哥说编程 阅读(2823) 评论(5) 推荐(2) 编辑
摘要: 在某些情况下,我们需要去引用其他List中的数据,比如在网站集(Site Collection)上有个List叫Country,在其子网站(WebSite)有个List叫Employee,如果要在子Site上的Employee去引用Country中的数据,一般我们会在Site Collection上创建一个网站栏(Site Column)。这是一种解决方案。还有一种解决方案,我们也可以在项目中创建一个Lookup 类型的 Site Column,其Scope为Site,顺着思路,我理所应当的创建了一个Site Column,Scope=Site,但事实上远没这么简单。其实两种方式都是可以的,先 阅读全文
posted @ 2013-10-26 15:54 木宛哥说编程 阅读(3195) 评论(0) 推荐(4) 编辑
摘要: 原文《Thinking In Design Pattern——MVP模式演绎》不知为何丢失了,故重新整理了一遍。目录What Is MVPDomain ModelStubRepositotyIView & PresenterViewIoc容器StructureMap开篇忙碌的9月,工作终于落定,新公司里的框架是MVP+Linq,对于MVP虽然不熟,但有MVC的基础,花了两天时间研究了MVP,故作此博文,留作参考。Model-View-Presenter(模型-视图-呈现器,MVP)模式的重点是让Presenter控制整个表示层的逻辑流。MVP模式由如下三个不同部分组成:模型表示视图显示 阅读全文
posted @ 2013-10-23 14:36 木宛哥说编程 阅读(2171) 评论(1) 推荐(0) 编辑
摘要: 目录 怎样使用SPSD配置Environment XML文件PowerShell激活Feature上篇博客讲了利用PowerShell导出、导入AD中的Users。这篇介绍简单介绍一下SPSD工具包(因为官网已经有非常详细的讲解),接着是附录了一些常用的PowerShell脚本,用于我在部署的时候快速导入css、js、images、设置MasterPage、创建权限组、分配权限等。SharePoint Solution Deployer(SPSD)能快速帮助程序员部署WSP,使用SPSD也是非常简单的,首先下载最新的工具:http://spsd.codeplex.com/。怎样使用SPSD对于 阅读全文
posted @ 2013-10-08 11:53 木宛哥说编程 阅读(1653) 评论(9) 推荐(2) 编辑
摘要: 这几个月一直在帮客户改需求,部署。我已经心力憔悴,经过一段时间的摸索,我对用PowerShell实现自动化部署也有了一些心得,比如说利用PowerShell导出导入AD中的User。在基于SharePoint平台开发时,利用AD来进行人员的管理,一般会建组织单元(OrganizationalUnit)来对用户进行管理。当最终部署到客户的服务器上时,怎样把本地AD中的用户数据同步到服务器上呢,要知道如果手动输入人员是一件麻烦的事。幸运的事,PowerShell可以帮我们解决这个麻烦的问题。导出AD Users(Export-Csv)首先导出本地相应OU中的User Objectparam([st 阅读全文
posted @ 2013-10-07 22:56 木宛哥说编程 阅读(5820) 评论(5) 推荐(3) 编辑
摘要: 客户需要在OA中实现每日动态功能,能够记录每一位员工的每天的工作动态,我很快想到了时间轴,因为时间轴能很直观的现实员工每一刻的动态。就像Facebook的Timeline效果(点击查看)。尝试着搜索这个效果,园友的这篇博文正好给我启发,接下来就去实现吧。成果演示最终的效果如下所示:点击每个员工的姓名,即可进入他当天的工作动态(只能看),若点击自己的名字(既能看又能发送/编辑/删除动态),如下所示:动态的详细页,如下所示:点击时间轴,即可新增动态,如下所示:编辑效果,鼠标移至内容区域,现实黄色提醒,如下所示:单击即可显示编辑界面,如下所示:移开鼠标,即可自动保存。当然如果想把一条当太删掉,点击右 阅读全文
posted @ 2013-09-25 19:47 木宛哥说编程 阅读(2987) 评论(5) 推荐(6) 编辑
摘要: 在SharePoint中,相对于Linq to SharePoint而言,CAML是轻量化的。当然缺点也是显而易见的,"Hard Code"有时会让你抓狂。在实际场景中,经常会根据某些并不复杂的要求从List中取出相关的ListItemCollection,所以用Linq to SharePoint这把牛刀就显得笨拙了,往往用CAML会显得便捷多了。所以本篇博客将对CAML查询进行快速指导。 对于List而言,我们对常见的Column进行讲解,常见的Column Type有Single Line Of Text、Multiple Lines of Text、Number、B 阅读全文
posted @ 2013-09-01 16:36 木宛哥说编程 阅读(1717) 评论(0) 推荐(2) 编辑
摘要: 在SharePoint中,我们经常要对List进行操作,比如要从List中取出相应的ListItem,利用CAML是个好办法。在没了解CAML之前,我是这样取数据的:MyList.Items.Cast().ToList().Where(Condition).Select(Fields);原谅我当初如此放荡不羁的写法吧。好了,现在进入CAML实战中,首先CAML (Collaborative Application Markup Language)基于XML的一种语言。所以你写CAML时一定要注意Tag是否闭合,另外CAML也是区分大小写的。正巧在看蝙蝠侠,可以将SPList对象可以看成是银行, 阅读全文
posted @ 2013-08-12 15:13 木宛哥说编程 阅读(3052) 评论(5) 推荐(2) 编辑
摘要: 接上篇我们知道,HttpRuntime中会对每一个Request创建一个HttpApplication对象(HttpApplicationFactory从一个HttpApplication池来拿)。对于Global.asax,当创建第一个HttpApplication对象才会执行的Application_Start方法。然后每一个HttpApplication对象会创建HttpModule对象,然后只执行一次Init方法。但在实际场景中,HttpRuntime会根据请求次数创建多个HttpApplication对象,所以每一个对象都会执行一遍Init方法,那怎么实现只执行一次Init方法来实现 阅读全文
posted @ 2013-08-11 00:49 木宛哥说编程 阅读(1198) 评论(5) 推荐(2) 编辑
摘要: 在SharePoint开发时,你会遇到这样一个问题,Global.asax去哪儿?怎样添加一个Global.asax?怎样在Application_Start这个事件处理程序里设置初始化?似乎在Visual Studio中无法像纯ASP.NET开发那样轻松添加一个Global.asax。当然找到这个Global.asax也不难,打开IIS,右键浏览对应网站,在网站根目录下你可以找到Global.asax。比如我的网站部署在C:\inetpub\wwwroot\wss\VirtualDirectories\4909路径下。我不推荐去修改这个Global文件,因为这似乎不是最佳实践。在ShareP 阅读全文
posted @ 2013-08-10 12:51 木宛哥说编程 阅读(2035) 评论(1) 推荐(1) 编辑
摘要: 基于SharePoint平台开发时,人员选择器使用频率是非常高的,但是原生的人员选择器使用太麻烦,而且非常笨拙,非常不友好,特别是对呆在政府部门的老爷们,要让他们手动输入人员,简直就是痴心妄想。总之一句话,越简单越好。 为了让客户满意,必须要对人员选择器进行改造,原生的PeopleEditor彻底抛弃。只能另辟蹊径,寻找适合的JQuery插件,创建新的人员选择器,分析了一下需求,可以归纳新的人员选择器必须支持如下情况:支持人员的多选,比如像会议、通知需要对多人进行发送,当然也要支持删除。对于单选的人员选择器,可以删除选中的人员。不管单选还是多选,支持Jquey AutoComplete那样索. 阅读全文
posted @ 2013-07-29 00:33 木宛哥说编程 阅读(6389) 评论(7) 推荐(6) 编辑
摘要: 我一直以为只有在Document Library里面的File才会支持在线编辑。直到今天早上我才发现用IE打开List里面的Attachments也是支持在线编辑的,但前提是必须是IE浏览器。目前正在开发的项目,我开始设计时是把所有的审批信息存放在List中,上传的文档以Attachments形式保存于List中,昨天客户来公司,我演示的时候,用Chrome打开附件,直接下载了(以后建议用IE),客户需要在线编辑功能,还狠狠的批了我们一顿,附件不能在线编辑,那我审核个毛线。(其实是可以的,用IE就行。)结束后,我也没多想(经验不足)直接对代码进行该了,将FileUpload上传的文件保存到一个 阅读全文
posted @ 2013-07-27 13:02 木宛哥说编程 阅读(2965) 评论(1) 推荐(3) 编辑
摘要: 起因今天想进入SharePoint 2013 Central Administration创建一个WebApplication,尽然发生了错误:The password supplied with the username Domain\UserName was not correct. Verify that it was entered correctly and try again具体如下图:中文意思是Password不正确,验证之后再尝试,想了一下,确实之前AD中设置了密码过期了,所以更新了Farm(spDevFarmAcc)的密码,难道是这个原因?解惑确实是由于更新了密码导致了验证不 阅读全文
posted @ 2013-06-26 10:10 木宛哥说编程 阅读(1226) 评论(0) 推荐(1) 编辑
摘要: SharePoint的文档库非常方便,可以管理日常的文档,更强大的是可以创建文件夹来分类,通常在UI界面上是非常简单了,点击文件夹,Create a Folder即可。但是,怎样手动去创建文件夹呢,怎样在文件夹中创建子文件夹。项目分析举个栗子,我需要上传文档到文档库,希望把该文件上传到以年、月、日、上传人命名的子文件夹中,如:2013年-->5月-->11日-->陈小春,如下图所示这样点击2013年,进入当前月子文件夹点击当前月,进入以上传人命名的子文件夹点击上传人(陈小春),即可看到我们上传的文档代码实现首先我们完成对参数的设置,初始化参数 //获取年度参数 ... 阅读全文
posted @ 2013-06-11 18:21 木宛哥说编程 阅读(3018) 评论(4) 推荐(0) 编辑
摘要: 平常开发时,或多或少都需要和Word打交道,特变是编辑、导出Word。利用DocX,开源的读写Word组件,可以快速帮助我们进行对Word的操作。DocX官方网站:http://docx.codeplex.com/DocX主要功能在文档中(Word)插入,删除或者替换文本,支持所有的标准文本格式,如字体{Family,Size,Color},出体,斜体、下划线、高亮等。提供段落属性,你可以设置其对其方向,如从左到右,居中对齐等。DocX同样支持对图片的操作、超链接、表格、页首、页眉等。最重要的一点DocX支持自定义文档属性(Custom Properties)最近要对一个SharePoint项 阅读全文
posted @ 2013-06-11 09:44 木宛哥说编程 阅读(2618) 评论(6) 推荐(2) 编辑
摘要: 写了个Demo,利用Microsoft.VisualBasic这个程序集中的TextFieldParser解析器解析CSV格式的文件,然后将解析的数据插入到相关表,这样的好处是不用去用令人头疼的ODBC去操作CSV格式文件,如之前是这样去操作:利用ODBC去操作string strConnString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + this.dirCSV.Trim() + ";Extensions=asc,csv,tab,txt;Persist Security Info=Fals 阅读全文
posted @ 2013-06-04 15:31 木宛哥说编程 阅读(1370) 评论(0) 推荐(0) 编辑
摘要: 操作系统要求Windows Server 2012安装SharePoint前准备当安装了Windows Server 2012后,你需要做如下事情:给你的计算机取一个新的名字,你可以在控制面板-->系统和安全-->计算机名、域和工作组设置-->更改设置完成配置AD(我的域名:Medusa)安装SQL Server之前建议更新一下Windows安装SQL Server开始安装SharePoint这儿我们用Autospinstaller和AutoSpSourceBuilder这两个开源的工具包来安装配置我们的SharePoint Server 2013,详细步骤如下:a) 下载最 阅读全文
posted @ 2013-04-16 14:05 木宛哥说编程 阅读(2291) 评论(3) 推荐(3) 编辑
摘要: 虽然开发中很少接触多线程,但你必须承认你离不开他。接着上篇博客(ASP.NET那点不为人知的事(三)),基本可以实现一个Mini版的服务器,但也有不足:倘若客户端飞快地连接,服务端很快被压垮。幸好,Socket类实现了.NET框架的异步调用模式,使用这个模式,利用线程池就可以让服务器更好的服务于到来的请求。重构后的版本:class Program { private const int ConnectionQueueLength = 4; private const int ListenPort = 1234; private const int... 阅读全文
posted @ 2013-04-02 02:17 木宛哥说编程 阅读(1078) 评论(1) 推荐(0) 编辑
摘要: 有了以下的知识:ASP.NET那点不为人知的事(一)ASP.NET那点不为人知的事(二)想必开发一个小型服务器以不是问题了,功能补复杂,能够响应客户端浏览器的请求,并根据请求文件的类型返回响应的信息,如能处理静态页面、图片、样式、脚本、动态页面等。回顾由于客户端和服务端的通信是通过Socket通信,且它们通信的“语言”是基于Http1.1协议。根据这个线索,我们完全可以自己开发服务器软件,暂且叫他Melodies Server,当然这是一个很简单的样例,和真正的服务器还是有差距的,好,我们进入正题,首先需要了解以下几个知识点:客户端和服务端是由Socket进行通信,在服务器端需要有监听请求的套 阅读全文
posted @ 2013-03-23 01:09 木宛哥说编程 阅读(1275) 评论(1) 推荐(1) 编辑
multifunction lasers
访问人数