SharePoint性能总结和一些开发经验(4)

来源:互联网 发布:陶哲轩实分析 知乎 编辑:程序博客网 时间:2024/04/30 07:12

    SharePoint性能总结和一些开发经验(4)

21.       SPViewScope介绍

Default :仅显示指定文件夹下的文件和子文件夹

FilesOnly:仅显示指定文件夹下的文件

Recursive:显示所有文件夹下的文件

RecursiveAll:显示所有文件夹下的所有文件和子文件夹

以上这个属性使用在CAML中,用于控制在哪些范围内进行查找,我们可以根据实际的查找需求,对这个ViewAttribute属性进行设置,来完成我们的操作。

22.       SPGridView介绍

SPGridViewGridView的基础上,进行了一些扩展,也就是说他拥有GridView的所有功能,并且在其基础上有所改进。改进的主要是分组、分页、下拉菜单和filter功能。但是SPGridView不支持自动生成列,所以在使用的时候一定要将AutoGenerateColums属性设置成false

23.       JavaScriptreplace方法介绍

使用JaveScriptReplace方法,这个方法支持使用正则表达式,如果不使用正则表达式的话,默认只是会替换第一个匹配的字符。所以我们采用strM.replace(/&/g,"//")来将字符串中的所有目标字符。所以将这个方法和相应的正则表达式进行配合使用,功能将是非常强大的。

24.       在使用

SPFolder folder = web.GetFolder(url);

这样是通过url直接得到folder对象,没有经过list那个级别,对List的数据还可能没有进行初始化,所以使用folder.ParentListId可能是空,从而取不到List对象。也就是说不能取这个Folder对象的对应的Parent List的对象的属性。

25.  当我们对Web下的某些对象进行更新的时候,我们虽然调用了Web.Update()方法,但是SharePoint中的API不会将Web对象重新加载,也就是不会将一些新的MetaData从数据库中重新加载到Web对象中,这样就有可能造成对象不一致的现象。我们解决这个问题的方法是在我们使用Web的时候,要重新获取一下Web对象就可以了。

26.  使用CheckoutCheckin方法的时候,首先要判断进行操作的文件的状态,如果没有被Checkout,那就不能够被Checkin,如果是Checkout状态,就不能够再被Checkout了。同时对文件的CheckOut也就是相当于将文件添加了一个锁,标识一下这个文件的状态。如果这个文件被Checkout出去之后,其他人就不能够对其进行Checkout了,除非将其强制的Discard Checkout

27.  使用AllowUnSafeUpdate属性的一些需要注意的地方,这个属性是为了阻止不安全更新的属性,如果我们要对Web中的一些对象进行更新的时候,如果没有将这个属性设置成true将会出现一个验证异常。如果HttpContext.Current这个对象是Null的话,那么这个属性将永远是true。在使用这个属性的时候,一定要确定设置的是我们要进行更新的Web对象,如果不是,在更新的时候将会出现异常,因为以前我们对Web进行了一些操作,这样这个Web对象就发生了变化,不再是我们现在这个Web对象了,也就是导致了对象不一致,所以我们需要重新取得这个Web对象,然后再设置这个属性即可。

28.       一般在SharePoint部署的时候,我们使用WSP对一些文件进行部署,同时更新web.config,但是有些时候需要对web.config添加一些自定义的节点,并且可能修改原来的节点,所以使用WSP不能够完全满足我们的需求,应该使用WebConfigurationModification类对web.config文件进行修改。如下所示:

using (SPSite siteCollection = new SPSite("http://chris:11111/sites/testconfig"))

            {

                using (SPWeb site = siteCollection.OpenWeb())

                {

                    site.AllowUnsafeUpdates = true;

                    SPWebApplication app = siteCollection.WebApplication;

                    SPWebConfigModification modification1 = new SPWebConfigModification();

                    modification1.Path = "configuration";

                    modification1.Name = "connectionStrings";

                    modification1.Value = " <connectionStrings></connectionStrings> ";

                    modification1.Owner = Assembly.GetExecutingAssembly().FullName;

                    modification1.Sequence = 100;

                    modification1.Type

=SPWebConfigModification.SPWebConfigModificationType.EnsureSection;

                    app.WebConfigModifications.Add(modification1);

           

                 SPWebService service = SPFarm.Local.Services.GetValue < SPWebService >

();

                    service.ApplyWebConfigModifications();

            }

      }

 

原创粉丝点击