SharePoint 2010 -- 經常使用技巧及方法總結javascript
一、代碼調試肯定進程 cd c:\windows\system32\inetsrv appcmd list wp pause 注:保存成批處理文件,查看進程.bat,用的時候雙擊便可css
二、相似列表新建打開方式的彈出腳本 <script type="text/javascript"> function OpenFrameDialog() { var options =SP.UI.$create_DialogOptions(); options.url="http://www.baidu.com"; options.height=160; options.dialogReturnValueCallback=Function.createDelegate(null,CloseDialogCallback); SP.UI.ModalDialog.showModalDialog(options); } function CloseDialogCallback(result,target) { if(result===SP.UI.DialogResult.OK) { javascript:setTimeout('javascript:return true;',8000); messageId=SP.UI.Notify.addNotification("<img src='_layouts/images/loading.gif'/>Creating list<b>"+target+"</b>..."); } if(result ===SP.UI.DialogResult.cancel) { SP.UI.Notify.addNotification("Operation was cancelled...",false,"",null) } } </script> <a href="Javascript:OpenFrameDialog();">Open dialog</a> 注:在Moss頁面上運行便可html
三、網站的備份還原命令 PowerShell的命令: 備份:backup-SPSite http://localhost:10086 -Path C:\100861.bak 還原:Restore-SPSite http://localhost:10087 -Path C:\10086.bak -Force -DatabaseServer sharepoint2010 -DatabaseNamejava
wss_content_10087Test Stsadm的命令: 備份:C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN>stsadm -o backup -url http://localhost -web
filename c:/80.bak 還原:C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN>stsadm -o restore -url http://localhost -數據庫
filename c:/80.bak -overwrite 管理中心->備份和還原 注:管理中心的備份功能,能夠經過PowerShell和Stsadm的命令進行還原,而管理中心的還原功能,須要打到sp1補丁。編程
四、SharePoint 2010的對象模型編程 建議使用.Net 3.5的引用,若是使用.Net 4.0,編譯後會沒法使用Microsoft.SharePoint的類庫,Perfessional 2010 Development這本書中記windows
錄是SharePoint不支持.Net 4.0。瀏覽器
五、瀏覽器自動兼容到IE7 <meta http-equiv="X-UA-Compatible" content="IE=7" />緩存
六、代碼修改2010站點風格爲2007 SPSite site = new SPSite(站點集路徑); SPWeb web = site.OpenWeb(要設置的站點路徑); web.UIVersion = 3; //改成2007風格 web.Update();
七、顯示出來錯誤,不顯示友好界面(2007裏修改前兩項,2010修改三項) 修改web.config,找到以下三個節點,並修改爲以下值: <SafeMode CallStack="true" /> <customErrors mode="Off" /> <compilation debug="true" /> 這樣,詳細的錯誤信息就會顯示出來
八、最大權限才能看到"網站操做" <SharePoint:SPSecurityTrimmedControl AuthenticationRestrictions="AuthenticatedUsersOnly" Permissions="FullMask"
runat="server" ID="yincangwangzhancaozuo"> <span class="siteActionMenu"> <PublishingSiteAction:SiteActionMenu runat="server"/> </span> </SharePoint:SPSecurityTrimmedControl>
九、修改上傳附件大小設置 stsadm -o setproperty -propertyname max-template-document-size -propertyvalue 524288000(500M這是最大了。)
十、列表導入和導出 stsadm -o exportlist -siteurl http://site1/ -listname ABCList -filename d:\abclist.cmp (導出列表到一個文件) stsadm -o importlist -siteurl http://site2/ -filename d:\abclist.cmp 注:把一個文件導入到SharePoint網站裏,恢復成一個列表
十一、開啓部件視圖的匿名功能 stsadm -o deactivatefeature -url http://localhost:8084 -filename ViewFormPagesLockDown\feature.xml 注:不少場景下,網站開啓匿名了,可是依然須要登陸,主要有些視圖沒有開啓匿名,須要這個命令。運行一遍,關掉匿名,再開便可。
十二、釋放SharePoint補丁的命令 d:\moss\officeserver2007sp1-kb936984-x86-fullfile-zh-cn.exe /extract:d:\moss\Updates
1三、Iframe去掉背景 在嵌入的Iframe中加入allowtransparency="true" scrolling="no"
1四、顏色漸變的css濾鏡 <div id="popupWin_content" onMouseDown="event.cancelBubble=true;" style="overflow:hidden; text-align:center; filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#FFE0E9F8', EndColorStr='#FFFFFFFF');position:absolute; width:878px; top:0px; height:500px;"
onmouseout="style.textDecoration='none';">嵌入的iframe</div>
1五、字號、磅數、像素對應關係 中文字號VS英文字號(磅)VS像素值的對應關係(96Dpi狀況下): 八號=5磅(5pt) ==(5/72)*96=6.67 =6px 七號=5.5磅 ==(5.5/72)*96=7.3 =7px 小六=6.5磅 ==(6.5/72)*96=8.67 =8px 六號=7.5磅 ==(7.5/72)*96=10px 小五=9磅 ==(9/72)*96=12px 五號=10.5磅 ==(10.5/72)*96=14px 小四=12磅 ==(12/72)*96=16px 四號=14磅 ==(14/72)*96=18.67 =18px 小三=15磅 ==(15/72)*96=20px 三號=16磅 ==(16/72)*96=21.3 =21px 小二=18磅 ==(18/72)*96=24px 二號=22磅 ==(22/72)*96=29.3 =29px 小一=24磅 ==(24/72)*96=32px 一號=26磅 ==(26/72)*96=34.67 =34px 小初=36磅 ==(36/72)*96=48px 初號=42磅 ==(42/72)*96=56px
取得列表中的Item的數量:
Int count = SPContext.Current.List.Items.Count;
這句是取得Item的數目,不得不取得列表中的全部的Item的metadata,這樣咱們程序運行的速度就會相對慢一些,若是列表中的數據量不大,那不會有明顯的影響,若是列表中的數據量很大,那在效率上會有很大的影響。
Int count = SPContext.Current.List.ItemCount;//建議使用這個來取得列表中的item數量。
SPList list = SPContext.Current.List;
For(int i=0;i<50;i++)
{
SPListItem listItem = list.Items[i];
}
這樣每次都會請求SPListItemCollection集合的新的對象,而使item集合對象沒有被緩存。所以不斷的從數據庫請求全部的數據項,對性能上形成很大的影響。
建議的方法是:
SPListItemCollection item = SPContext.Current.List.Items;
For(int i=0;i<50;i++)
{
SPListItem item = items[i];
}
SPListItem item = SPContext.Current.List.Items[0];
這句主要是從list中先取得對象的全部的Item的Metadata,而後再從這些Item的集合中取獲得index是0的Item
建議使用下面語句進行取得Item對象:
SPListItem item = SPContext.Current.List.GetItemById(0);
兩句SDK執行的區別就是咱們使用SQL語句進行查詢的時候,第一沒有設置where子句的條件,而第二句則是設置了where子句的條件,在數據量很大的狀況下,這樣第二句執行的速度會遠遠大於第一句執行的速度。
For(int itemIndex=0;itemIndex<100;itemIndex++)
{
SPListItem newItem = items.Add();
newItem.Update();
}
實際上item的Add 或是Update方法是調用了一個存儲過程,來完成這個操做的。
若是須要大量的數據更行的使用建議使用SPWeb的ProcessBatchData方法進行更新。具體實例以下:
SPContext.Current.Web.ProcessBatchData(queryString);
SPList list = SPContext.Current.Web.Lists[title];
這句取得列表對象先從站點中取得全部的List的Metadata和title進行比較,找到符合條件的list以後返回。
建議使用下面的方法取得列表對象:
SPList list = SPContext.Current.Web.GetList(listUrl);或
SPList list = SPContext.Current.Web.GetListByUrl(listUrl);
位置 |
自定義操做組 ID |
組說明 |
默認自定義操做 ID |
DisplayFormToolbar |
N/A |
Location 對應於列表的顯示錶單工具欄。 |
ExportEventToolbarButton(日曆) ExportContactToolbarButton(聯繫人) |
EditControlBlock |
N/A |
對應於每項編輯控件塊 (ECB) 菜單。 |
|
EditFormToolbar |
N/A |
Location 對應於列表的編輯表單工具欄。 |
|
Microsoft.SharePoint.Administration.ApplicationCreated |
連接 |
「已建立應用程序」頁。 |
CreateSite HomePage |
Microsoft.SharePoint.Administration.ApplicationManagement |
ApplicationSecurity |
管理中心的「應用程序管理」頁面上的「應用程序安全性」部分。 |
ManageAuthenticationProviders |
Microsoft.SharePoint.Administration.ApplicationManagement |
ExternalService |
|
DocConversion |
Microsoft.SharePoint.Administration.ApplicationManagement |
SiteManagement |
|
ListSiteCollections |
Microsoft.SharePoint.Administration.ApplicationManagement |
WebApplicationConfiguration |
|
ListWebApplications |
Microsoft.SharePoint.Administration.ApplicationManagement |
WorkflowManagement |
管理中心的「應用程序管理」頁面上的「工做流管理」部分。 |
WorkflowManagement |
Microsoft.SharePoint.Administration.Operations |
BackupRestore |
管理中心的「操做」頁面上的「備份和還原」部分。 |
BackupStatus |
Microsoft.SharePoint.Administration.Operations |
DataConfiguration |
管理中心的「操做」頁面上的「數據配置」部分。 |
DataRetrieval |
Microsoft.SharePoint.Administration.Operations |
GlobalConfiguration |
|
Solutions |
Microsoft.SharePoint.Administration.Operations |
LoggingAndReporting |
管理中心的「操做」頁面上的「日誌記錄和報告」部分。 |
UsageAnalysis |
Microsoft.SharePoint.Administration.Operations |
Security |
管理中心的「操做」頁面上的「安全性配置」部分。 |
AdministrationRoles |
Microsoft.SharePoint.Administration.Operations |
Topology |
管理中心的「操做」頁面上的「拓撲結構和服務」部分。 |
EmailConfiguration |
Microsoft.SharePoint.Administration.Operations |
Upgrade |
管理中心的「操做」頁面。 |
FinalizeUpgrade |
Microsoft.SharePoint.ContentTypeSettings |
Fields |
|
|
Microsoft.SharePoint.ContentTypeSettings |
General |
|
|
Microsoft.SharePoint.ContentTypeTemplateSettings |
Fields |
|
|
Microsoft.SharePoint.ContentTypeTemplateSettings |
General |
列表的「內容類型」頁面上的「設置」部分。 |
RemoveContentType |
Microsoft.SharePoint.Create |
WebPages |
「建立」頁面上的「網頁」部分。 |
|
Microsoft.SharePoint.GroupsPage |
NewMenu |
網站集的「人員和組」頁面上的「新建」菜單。 |
|
Microsoft.SharePoint.GroupsPage |
SettingsMenu |
網站集的「人員和組」頁面上的「設置」菜單。 |
|
Microsoft.SharePoint.ListEdit |
Communications |
列表或文檔庫的「自定義」頁面上的「通訊」部分。 |
|
Microsoft.SharePoint.ListEdit |
GeneralSettings |
列表的「自定義」頁面上的「常規設置」部分。 |
|
Microsoft.SharePoint.ListEdit |
Permissions |
列表或文檔庫的「自定義」頁面上的「權限和管理」部分。 |
|
Microsoft.SharePoint.ListEdit.DocumentLibrary |
GeneralSettings |
文檔庫的「自定義」頁面上的「常規設置」部分。 |
|
Microsoft.SharePoint.PeoplePage |
ActionsMenu |
網站集的「人員和組」頁面上的「操做」菜單。 |
|
Microsoft.SharePoint.PeoplePage |
NewMenu |
網站集的「人員和組」頁面上的「新建」菜單。 |
|
Microsoft.SharePoint.PeoplePage |
SettingsMenu |
網站集的「人員和組」頁面上的「設置」菜單。 |
|
Microsoft.SharePoint.SiteSettings |
Customization |
|
|
Microsoft.SharePoint.SiteSettings |
Galleries |
|
|
Microsoft.SharePoint.SiteSettings |
SiteAdministration |
|
|
Microsoft.SharePoint.SiteSettings |
SiteCollectionAdmin |
|
|
Microsoft.SharePoint.SiteSettings |
UsersAndPermissions |
|
|
Microsoft.SharePoint.StandardMenu |
ActionsMenu |
列表和文檔庫視圖中的「操做」菜單。 |
|
Microsoft.SharePoint.StandardMenu |
ActionsMenuForSurvey |
用於調查的「網站操做」菜單。 |
|
Microsoft.SharePoint.StandardMenu |
NewMenu |
列表和文檔庫視圖中的「新建」菜單。 |
|
Microsoft.SharePoint.StandardMenu |
SettingsMenu |
列表和文檔庫視圖中的「設置」菜單。 |
|
Microsoft.SharePoint.StandardMenu |
SettingsMenuForSurvey |
用於調查的「網站設置」連接。 |
|
Microsoft.SharePoint.StandardMenu |
SiteActions |
「網站操做」菜單。 |
|
Microsoft.SharePoint.StandardMenu |
UploadMenu |
文檔庫視圖中的「上載」菜單。 |
|
Microsoft.SharePoint.User |
ActionsMenu |
網站的「權限」頁面上的「操做」菜單。 |
|
Microsoft.SharePoint.User |
NewMenu |
網站的「權限」頁面上的「新建」菜單。 |
|
Microsoft.SharePoint.User |
SettingsMenu |
網站的「權限」頁面上的「設置」菜單。 |
|
Microsoft.SharePoint.Workflows |
LeftNavBarLinks |
用於管理工做流的頁面上的左側導航區域。 |
|
NewFormToolbar |
N/A |
Location 對應於列表的新建表單工具欄。 |
|
ViewToolbar |
N/A |
Location 對應於列表視圖中的工具欄。 |
|
字符串直接的連接須要的內存量很大,效率很低。建議方法以下:
StringBuilder msgString = new StringBuidler();
xmlString.Append(「message1」);
xmlString.Append(「message1」);
string message = msgString.ToString();
不建議使用的方法是:
String message = 「message1」+」message2」;
特別是在消息字符串很長的狀況下。程序運行的效率至關的低。
例如:SPSite,SPWeb等等其餘一些對象。可是須要注意的是咱們若是使用全局的SPWeb,就不該該進行釋放,例如:SPContext.Current.Web就是一個全局的Web對象,當咱們使用這個對象的時候,咱們不該該把這個對象進行Dispose。
通常的釋放非託管對象的方法有兩種:
(1) try ---catch---finally
SPSite site = null;
Try
{
Site = new SPSite(「http://server:80」);
}
Catch(Exception er)
{
//TODO:
}
Finally
{
If(site != null)
{
Site.Dispose();
}
}
(2) using
using(SPSite site = new SPSite(「http://server:80」))
{
//TODO
}
在比較的時候咱們應該注意是否忽略大小寫,這個地方是很容易出現問題的地方。
String name1 = 「A」;
String name2 = 「a」;
Bool flag = name1.Equals(name2);// flag 是false
Bool flag = name1.Equals(name2, StringComparison.OrdinalIgnoreCase);//flag 是true
若是使用folder.Item.BreakRoleInheritance(false)的時候會拋出一個異常,緣由是SharePoint API中原有這個問題。咱們解決這個問題一般使用folder. Item.BreakRoleInheritance(true);而後咱們在刪除掉他原有的權限。這樣操做以後再給這個folder賦予新的權限便可。
(1) 在程序中最好不要屢次使用return , 儘可能在程序結束或是咱們的邏輯完成的時候進行return例如:
If(testValue == 1)
{
Return 1;
}
Else if(testValue == 2)
{
Return 2;
}
…….
建議使用以下方法:
Int returnValue =0;
If(testValue ==1)
{
returnValue = 1;
}
Elseif(testValue ==2)
{
returnValue = 2;
}
……
Return returnValue;
(2) 在程序中儘可能不要使用GoTo語句,使用GoTO語句使程序很是的不可讀,可能以後編寫程序的人才懂程序的意思,其餘人根本看不懂程序是完成什麼功能的,還有可能時間長了,編寫程序的人本身也不懂具體是什麼意思了,這樣會很是糟糕,不利於之後的擴展和維護。
String message = 「123」;
Bool flag = string.IsNullOrEmpty(message);
咱們在初始化一個空字符串的時候,應該儘可能使用以下方法:
String str1 = string.Empty;
儘可能不要使用 string str2 = 「」;
由於這兩種內存分配的方式,是不一樣的,C#內部處理的機制也是不相同的。
在編程實踐中咱們若是使用List<T> lists = new List<T>();,可以解決的問題,最好不要使用ArrayList和Hashtable等集合,由於ArrayList、Hashtable這樣的集合會存在拆箱和裝箱問題,佔用程序很大的性能,若是數量過多會嚴重影響性能。