• SharePoint 2010 -- 常用技巧及方法总结


    SharePoint 2010 -- 常用技巧及方法总结

    1、代码调试确定进程 cd c:windowssystem32inetsrv appcmd list wp pause 注:保存成批处理文件,查看进程.bat,用的时候双击即可

    2、类似列表新建打开方式的弹出脚本 <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页面上运行即可

    3、网站的备份还原命令 PowerShell的命令: 备份:backup-SPSite http://localhost:10086 -Path C:100861.bak 还原:Restore-SPSite http://localhost:10087 -Path C:10086.bak -Force -DatabaseServer sharepoint2010 -DatabaseName

    wss_content_10087Test Stsadm的命令: 备份:C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14BIN>stsadm -o backup -url http://localhost -

    filename c:/80.bak 还原:C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14BIN>stsadm -o restore -url http://localhost -

    filename c:/80.bak -overwrite 管理中心->备份和还原 注:管理中心的备份功能,可以通过PowerShell和Stsadm的命令进行还原,而管理中心的还原功能,需要打到sp1补丁。

    4、SharePoint 2010的对象模型编程 建议使用.Net 3.5的引用,如果使用.Net 4.0,编译后会无法使用Microsoft.SharePoint的类库,Perfessional 2010 Development这本书中记

    录是SharePoint不支持.Net 4.0。

    5、浏览器自动兼容到IE7 <meta http-equiv="X-UA-Compatible" content="IE=7" />

    6、代码修改2010站点风格为2007 SPSite site = new SPSite(站点集路径); SPWeb web = site.OpenWeb(要设置的站点路径); web.UIVersion = 3; //改为2007风格 web.Update();

    7、显示出来错误,不显示友好界面(2007里修改前两项,2010修改三项) 修改web.config,找到如下三个节点,并修改成如下值: <SafeMode CallStack="true" /> <customErrors mode="Off" /> <compilation debug="true" /> 这样,详细的错误信息就会显示出来

    8、最大权限才能看到"网站操作" <SharePoint:SPSecurityTrimmedControl AuthenticationRestrictions="AuthenticatedUsersOnly" Permissions="FullMask"

    runat="server" ID="yincangwangzhancaozuo"> <span class="siteActionMenu"> <PublishingSiteAction:SiteActionMenu runat="server"/> </span> </SharePoint:SPSecurityTrimmedControl>

    9、修改上传附件大小设置 stsadm -o setproperty -propertyname max-template-document-size -propertyvalue 524288000(500M这是最大了。)

    10、列表导入和导出 stsadm -o exportlist -siteurl http://site1/ -listname ABCList -filename d:abclist.cmp (导出列表到一个文件) stsadm -o importlist -siteurl http://site2/ -filename d:abclist.cmp 注:把一个文件导入到SharePoint网站里,恢复成一个列表

    11、开启部件视图的匿名功能 stsadm -o deactivatefeature -url http://localhost:8084 -filename ViewFormPagesLockDownfeature.xml 注:很多场景下,网站开启匿名了,但是依然需要登录,主要有些视图没有开启匿名,需要这个命令。运行一遍,关掉匿名,再开即可。

    12、释放SharePoint补丁的命令 d:mossofficeserver2007sp1-kb936984-x86-fullfile-zh-cn.exe /extract:d:mossUpdates

    13、Iframe去掉背景 在嵌入的Iframe中加入allowtransparency="true" scrolling="no"

    14、颜色渐变的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;  878px; top:0px; height:500px;"

    onmouseout="style.textDecoration='none';">嵌入的iframe</div>

    15、字号、磅数、像素对应关系 中文字号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数量。

     

    1. 显示列表中的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];

    }

    1. 取得item对象

    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子句的条件,在数据量很大的情况下,这样第二句执行的速度会远远大于第一句执行的速度。

    1. 更新大量的SharePoint 列表数据项

    For(int itemIndex=0;itemIndex<100;itemIndex++)

    {

       SPListItem newItem = items.Add();

       newItem.Update();

    }

    实际上item的Add 或是Update方法是调用了一个存储过程,来完成这个操作的。

    如果需要大量的数据更行的使用建议使用SPWeb的ProcessBatchData方法进行更新。具体实例如下:

    SPContext.Current.Web.ProcessBatchData(queryString);

     

    1. 取得SharePoint的列表对象

    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);

    1. SharePoint中常用的自定义Feature的Location和GroupId

    位置

    自定义操作组 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

    管理中心的“应用程序管理”页面上的“应用程序安全性”部分。

    • WebPartSecurity
    • SelfService
    • WebApplicationSecurity
    • ManagePolicy

    ManageAuthenticationProviders

    Microsoft.SharePoint.Administration.ApplicationManagement

    ExternalService

    • 管理中心的“应用程序管理”页面上的“外部服务连接”部分。
    • OfficialFile
    • HtmlViewer

    DocConversion

    Microsoft.SharePoint.Administration.ApplicationManagement

    SiteManagement

    • 管理中心的“应用程序管理”页面上的“SharePoint 网站管理”部分。
    • CreateSite
    • DeleteSite
    • SiteUse
    • QuotaDefinition
    • SiteQuota
    • SiteOwners

    ListSiteCollections

    Microsoft.SharePoint.Administration.ApplicationManagement

    WebApplicationConfiguration

    • 管理中心的“应用程序管理”页面上的“SharePoint Web 应用程序管理”部分。
    • Extend
    • Unextend
    • Delete
    • ManagedPaths
    • EmailSettings
    • GeneralSettings
    • ManageContentDatabases
    • ManageWebAppFeatures

    ListWebApplications

    Microsoft.SharePoint.Administration.ApplicationManagement

    WorkflowManagement

    管理中心的“应用程序管理”页面上的“工作流管理”部分。

    WorkflowManagement

    Microsoft.SharePoint.Administration.Operations

    BackupRestore

    管理中心的“操作”页面上的“备份和还原”部分。

    • Backup
    • BackupHistory
    • Restore

    BackupStatus

    Microsoft.SharePoint.Administration.Operations

    DataConfiguration

    管理中心的“操作”页面上的“数据配置”部分。

    • DefaultDatabase

    DataRetrieval

    Microsoft.SharePoint.Administration.Operations

    GlobalConfiguration

    • 管理中心的“操作”页面上的“全局配置”部分。
    • RunningJobs
    • JobDefinitions
    • AlternateAccessMappings
    • ManageFarmFeatures

    Solutions

    Microsoft.SharePoint.Administration.Operations

    LoggingAndReporting

    管理中心的“操作”页面上的“日志记录和报告”部分。

    • DiagnosticLogging

    UsageAnalysis

    Microsoft.SharePoint.Administration.Operations

    Security

    管理中心的“操作”页面上的“安全性配置”部分。

    • ServiceAccount
    • Irm
    • Antivirus
    • BlockedFileTypes

    AdministrationRoles

    Microsoft.SharePoint.Administration.Operations

    Topology

    管理中心的“操作”页面上的“拓扑结构和服务”部分。

    • FarmServers
    • TopologyServices
    • IncomingEmailServer
    • ApproveDGs

    EmailConfiguration

    Microsoft.SharePoint.Administration.Operations

    Upgrade

    管理中心的“操作”页面。

    • SiteUpgradeStatus

    FinalizeUpgrade

    Microsoft.SharePoint.ContentTypeSettings

    Fields

    • 网站集的“内容类型”页面上的“列”部分。
    • AddField
    • ReorderFields
     

    Microsoft.SharePoint.ContentTypeSettings

    General

    • 网站集的“内容类型”页面上的“设置”部分。
    • ChangeNameDescription
    • ChangeOptionalSettings
    • ChangeWorkflowSettings
    • RemoveContentType
     

    Microsoft.SharePoint.ContentTypeTemplateSettings

    Fields

    • 列表的“内容类型”页面上的“列”部分。
    • AddField
    • ReorderFields
     

    Microsoft.SharePoint.ContentTypeTemplateSettings

    General

    列表的“内容类型”页面上的“设置”部分。

    • ChangeNameDescriptionGroup
    • ChangeOptionalSettings
    • ChangeWorkflowSettings

    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

    • “网站设置”页面上的“外观”部分。
    • ProjectSettings
    • NavOptions
    • Theme
    • TopNav
    • QuickLaunch
    • SaveAsTemplate
    • ReGhost
     

    Microsoft.SharePoint.SiteSettings

    Galleries

    • “网站设置”页面上的“库”部分。
    • MasterPageCatalog
    • ManageCType
    • ManageField
    • SiteTemplates
    • ListTemplates
    • WebParts
    • Workflows
     

    Microsoft.SharePoint.SiteSettings

    SiteAdministration

    • “网站设置”页面上的“网站管理”部分。
    • RegionalSettings
    • LibrariesAndLists
    • WebUsage
    • UserAlerts
    • RSS
    • SrchVis
    • ManageSubWebs
    • ManageSiteFeatures
    • DeleteWeb
     

    Microsoft.SharePoint.SiteSettings

    SiteCollectionAdmin

    • “网站设置”页面上的“网站集管理”部分。
    • DeletedItems
    • SiteCollectionUsage
    • Storage
    • ManageSiteCollectionFeatures
    • Hierarchy
    • Portal
     

    Microsoft.SharePoint.SiteSettings

    UsersAndPermissions

    • “网站设置”页面上的“用户和权限”部分。
    • PeopleAndGroups
    • SiteCollectionAdministrators
    • User
     

    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 对应于列表视图中的工具栏。

    1. 如果遇到字符串拼接,我们通常使用StringBuilder,而不是直接使用字符串直接的链接

    字符串直接的链接需要的内存量很大,效率很低。建议方法如下:

    StringBuilder msgString =  new StringBuidler();

    xmlString.Append(“message1”);

    xmlString.Append(“message1”);

     

    string message = msgString.ToString();

    不建议使用的方法是:

    String message = “message1”+”message2”;

    特别是在消息字符串很长的情况下。程序运行的效率相当的低。

    1. SharePoint中有一些对象是非托管的对象,所以需要我们手动进行释放,防止内存泄漏。

    例如: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

    }

    1. 字符串的比较操作

    在比较的时候我们应该注意是否忽略大小写,这个地方是很容易出现问题的地方。

    String  name1 =  “A”;

    String  name2 = “a”;

     

    Bool flag = name1.Equals(name2);// flag 是false

    Bool flag = name1.Equals(name2, StringComparison.OrdinalIgnoreCase);//flag 是true

    1. 在SharePoint中我们要设置folder的权限,首先我们要打破原有的继承的权限,但是这里有一个问题需要注意一下:

    如果使用folder.Item.BreakRoleInheritance(false)的时候会抛出一个异常,原因是SharePoint API中原有这个问题。我们解决这个问题通常使用folder. Item.BreakRoleInheritance(true);然后我们在删除掉他原有的权限。这样操作之后再给这个folder赋予新的权限即可。

    1. 保持程度的可读性

    (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语句使程序非常的不可读,可能之后编写程序的人才懂程序的意思,其他人根本看不懂程序是完成什么功能的,还有可能时间长了,编写程序的人自己也不懂具体是什么意思了,这样会非常糟糕,不利于以后的扩展和维护。

     

    1. 判断字符串是否为空串,应该尽量使用下面方法:

    String message = “123”;

    Bool flag = string.IsNullOrEmpty(message);

    我们在初始化一个空字符串的时候,应该尽量使用如下方法:

    String str1 = string.Empty;

    尽量不要使用 string str2 = “”;

    因为这两种内存分配的方式,是不同的,C#内部处理的机制也是不相同的。

    1. 注意C#中的拆箱和装箱问题

    在编程实践中我们如果使用List<T> lists = new List<T>();,能够解决的问题,最好不要使用ArrayList和Hashtable等集合,因为ArrayList、Hashtable这样的集合会存在拆箱和装箱问题,占用程序很大的性能,如果数量过多会严重影响性能。

  • 相关阅读:
    .NET Core 玩一玩 Ocelot API网关
    VUE.js 中取得后台原生HTML字符串 原样显示问题
    简单了解 iTextSharp实现HTML to PDF
    ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下
    C# AutoMapper 了解一下
    玩一玩基于Token的 自定义身份认证+权限管理
    ASP.NET MVC5 实现基于Quartz.NET任务调度
    ASP.NET MVC5 使用NPOI导出ExceL 返回浏览器下载
    [python][openpyxl]读取excel中公式的结果值
    Python实例001:实现识别图片中的文字
  • 原文地址:https://www.cnblogs.com/mySaveblogs/p/4021600.html
Copyright © 2020-2023  润新知