1. 与Visual Studio 2010整合.
可能是因为以前开发过sharepoint2007的关系, 这次VS2010对于sharepoint的强力整合, 对我这种开发人员来说, 实在是太给力了...
以前要写NN多xml, 现在统统省了. VS2010直接支持十余种sharepoint feature模版, 自动生成所需的xml.
原本灾难性的配置文件, 现在一键完成. 赞!!!
唯一美中不足的是, 貌似没有对Control Template的feature支持.
2. Event Receiver相关
这次开发sharepoint的项目用到了很多Event Receiver, 特此分享一下心得.
使用Event Receiver, 要注意的一点就是, Event Receiver里面做的任何增删改操作, 也是会触发相应的Event Receiver的, 弄不好就成了个无限循环的死套路.
这里介绍下, 在任何操作前, 加以下两句.
this.EventFiringEnabled = false;
web.AllowUnsafeUpdates = true;
并且在结束前加
this.EventFiringEnabled = true;
web.AllowUnsafeUpdates = false;
就可以啦. (最好的方式还是在try{} finally{} 块中加.
3. CAML Query
对于CAML Query的拼装依然是那么不方便, 经常出现这样那样的错误. 我建议去下载个CAML Query的Builder, 有时可以帮上不少忙.
4. Sharepoint 文件夹是否存在的判断.
项目里有需要用到判断某个文档库中, 是否存在某个文件夹. 一开始这判断还真把我难倒了... google搜啊搜. 终于给我搜到了.
- SPFolder spFolder = web.GetFolder(folderUrl);
- if (!spFolder.Exists)
- {
- ..........
- }
直接从SPWeb对象下获取, 可以判断. 如果从SPDocumentLibrary下获取, 不存在就直接exception了.
5. Sharepoint 2010中, webpart的工具栏.
2010中, webpart的工具栏默认是不显示的, 在编辑模式下, 将工具栏的选项改为"显示工具栏" 即可.
6. Sharepoint 2010 顶部工具栏. (英文叫Robbins)
Robbins是个让人欢喜让人恨的东西, 它简化了网站设计员和管理员的操作, 不再项2007中, 什么都靠菜单...
但对于那些sharepoint一窍不通的人来说, 每次点到List 或 DocLibrary中的项, 上面的robbins老变来变去, 真头疼.
关于怎么去掉robbins, 各种做法也有不同, 有用CSS的, 有用控件方式的, 有用Master页面直接删除的.
但我用下来, 还是推荐控件方式.
具体做法就在上面的帖子里, 我懒, 就不详细写出来了...
7. 文档库中的文件夹, 如何做成超链接
哇头疼头疼... 明明是文件夹, 怎么做超链接呢?? 客户的需求真诡异...
只能把此类需求当死马医, Sharepoint Designer打开对应List 或 DocLibrary的对应页面 (通常为AllItems.aspx)
加上下面这样.
- <asp:content contentplaceholderid="PlaceHolderAdditionalPageHead" runat="server">
- <SharePoint:RssLink runat="server"/>
- <script type="text/javascript">
- $(function(){
- var url = decodeURIComponent(decodeURIComponent(window.location.href));
- if(url.indexOf("2.每月项目总体情况汇总") != -1){
- window.location.href = "/sites/PMIS/PMReportDocument/4.每月项目总体情况汇总";
- }
- else if(url.indexOf("4.年度项目总体情况汇总") != -1){
- window.location.href = "/sites/PMIS/PMReportDocument/5.年度项目总体情况汇总";
- }
- });
- </script>
- </asp:content>
看了上面的代码, 熟悉jquery的同学, 应该已经知道什么意思了吧. 哈~~~
8. 实现表单中的下拉框3联动.
做这个需求, 又是狂搜... 其中各种曲折就不多说了, 最终方式还是回归jquery的ajax. 懂的同学应该明白了.. 不懂的同学, 去补补ajax吧...
9. 像2007里的Site Map
2010里的Site Map老实说, 真没啥用, 如何改成2007里的那种Site Map呢.?
在master页面中找到这个ContentPlaceHolder, 改为如下:
- <asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server">
- <asp:SiteMapPath ID="siteMap" runat="server" SiteMapProvider="SPContentMapProvider" ParentLevelsDisplayed ="-1" SkipLinkText=""/>
- </asp:ContentPlaceHolder>
10.如何修改网站的样式
sharepoint 2010的样式是保存在一个css文件里的, 哪个呢?
用Firefox的findBug插件看, 真心好用~~~ 调试js, 使用jquery的$ selector, 这插件真心好用, 也超越了其他所有浏览器的类似功能.
11.Sharepoint安装后, SQLServer的登陆问题.
本来没想要说这个, 但在帮客户安装一台新的Sharepoint的时候, 就遇到了这个问题, 安装的Windows用户, 居然无法登陆到对应的Sqlserver.
(我之前安装的两台都可以登陆, 因为安装的用户直接就是SqlServer的systemadmin了.)
急啊~~~ 网上又是猛搜.. 最后发现还是老外的帖子强..
把下面这段命令保存为一个.bat文件, 然后执行该文件, 并且带两个参数, 参数1是domainname, 参数2是username. 这样这个账号就会变成SqlServer的systemadmin...
尼玛真强悍...~~~
net stop mssql$sharepoint
net start mssql$sharepoint /m "sqlcmd"
sqlcmd -E -S LOCALHOST\SHAREPOINT -Q "CREATE LOGIN [%1\%2] FROM WINDOWS; EXEC master..sp_addsrvrolemember @loginame = N'%1\%2', @rolename = N'sysadmin';"
net stop mssql$sharepoint
net start mssql$sharepoint
iisreset