Sharepoint 2010 的一些實踐經驗和技巧.

開發sharepoint 2007已經是3年前的事情了, 最近正好完成了個sharepoint2010的小項目, 對sharepoint2010頗有感觸, 特此總結一下...

 

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頁面直接刪除的.

但我用下來, 還是推薦控件方式.

http://stackoverflow.com/questions/3561304/how-to-hide-the-list-ribbon-in-xslt-list-web-part-in-sharepoint-2010

具體做法就在上面的帖子裏, 我懶, 就不詳細寫出來了...

 

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

 

 

暫時想到的就這些了, 以後想到再加~ 哈~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章