?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和記娛到h88285:Sharepoint 70573考試習題和解析(Q1Q3)

?

Question 1

You have a helper method named CreateSiteColumn that contains the following code segment.

private static void CreateSiteColumn(SPWeb web, string columnName)

{

}

You need to add a new site column of type Choice to a SharePoint site by using the helper method.

Which code segment should you include in the helper method?

A. SPField field = new SPFieldChoice(System.web.Lists[0].Fields, columnName);

B. web.Fields.Add(columnName, SPFieldType.Choice, true);

C. web.Lists[0].Fields.Add(columnName, SPFieldType.Choice, True);

D. web.Lists[0].Views[0].ViewFields.Add(columnName);

解析:

本題的意圖是向Sharepoint Site中添加一個新的Site Column。

Site Columns是Sharepoint網站的一個緊張底層布局,它是一類可重用的列定義或模板,可以將其分配給一個或多個 SharePoint 網站的一個或多個列表(List)。一個Site Column是由幾個屬性定義的,包括名稱及其字段類型。例如 Title這個Column,其名稱便是Title,字段類型便是Text。

我們即可以經由過程Sharepoint的治理界面添加新的Site Column,也可以經由過程Sharepoint Designer添加新的Site Column,還可以經由過程代碼添加,比如應用如下代碼

(http://msdn.microsoft.com/zh-cn/library/ms472869.aspx)

using (SPWeb oWebsite = SPContext.Current.Site.AllWebs["MySite"])

{SPFieldCollection collFields = oWebsite.Lists["MyList"].Fields;

collFields.Add("MyField", Microsoft.SharePoint.SPFieldType.Text,true);

}

即指定某Sharepoint Site的某個列(List),應用List的Fileds屬性的Add措施添加Site Column,在添加的措施中可指定新的SiteColumn的名字,類型以及是否必需包孕數值。是以在供給的備選謎底中,B是精確謎底。

選項A:應用要領紕謬,SPFieldChoice 構造函數的應用定義如下:

SPFieldChoice(SPFieldCollection, String)Initializes a new instance of the SPFieldChoice class based on the specified field collection and field name.

SPFieldChoice(SPFieldCollection, String, String)Initializes a new instance of the SPFieldChoice class based on the specified field collection, type name, and display name.

很顯著A選項的應用措施與應用參數是紕謬的,尤其是第二個參數應該是FieldName而非ColumnName和記娛到h88285。

假如要向一個List中添加Choice類型的Column則可以應用如下類似的代碼:( 思路便是先向指定的List添加一個Choice類型的SiteColumn,再設置這個SiteColumn的備選項)

lstCustomList.Fields.Add("ABC", SPFieldType.Choice, false); //添加一個新的Field

lstCustomList.Update();SPFieldChoice objChoiceCol = (SPFieldChoice)lstCustomList.Fields["ABC"]; //設置這個新添加Field的屬性

string[] strdata = new string[2];strdata[0] = "Open";

strdata[1] = "Close";objChoiceCol.Choices.Add(strdata[0]);

objChoiceCol.Choices.Add(strdata[1]);objChoiceCol.Update();

lstCustomList.Update();

選項C.沒有這種用法。Lists【】中應該是ListName或Guid, 而不是所謂的索引值。類似的用法拜見如下代碼

private static void CreateList(string listName)

{using (v和記娛到h88285ar site = new SPSite(SiteUrl))

{var web = site.RootWeb;

var listId = web.Lists.Add(listName, string.Empty, SPListTemplateType.GenericList);

var list = web.Lists[listId];

list.OnQuickLaunch = true;list.Update();

var title = list.Fields["Title"];

title.Title = "Name";title.Update();

var empFieldName = list.Fields.Add("Employee", SPFieldType.Boolean, false);

var rateFieldName = list.Fields.Add("Salary/Rate", SPFieldType.Currency, true);var bioFieldName = list.Fields.Add("Bio", SPFieldType.Note, false);

var view = list.DefaultView;

view.ViewFields.Add(empFieldName);view.ViewFields.Add(rateFieldName);

view.ViewFields.Add(bioFieldName);view.Update();

}

選項D.也沒有這種用法,況且假如要向一個List的視圖中新添加Column,也僅限于添加已經存在的Column到此SPViewFieldCollection中。以是本選項是不能實現向List中添加新的Site Column的。而向List中添加新的Column的代碼如下:

SPSite oSiteCollection = SPContext.Current.Site;

using(SPWeb oWebsite = oSiteCollection.AllWebs["Website_Name"]){

SPList oList = oWebsite.Lists["List_Name"];SPView oView = oList.Views["All Items"];

SPViewFieldCollection collViewFields = oView.ViewFields;collViewFields.Add("Created");

oView.Update();

}

以是本題目精確先項應該是B

Qestion2:

You have a Web application that contains the following cod和記娛到h88285e segment.

private void CreatingSPSite()

{

SPSite siteCollection = null;

try

{

siteCollection = new SPSite("http://contoso.com");

}

finally

{

}

}

You need to prevent the code segment from causing a memory leak.

Which code segment should you add?

A.

if (siteCollection != null)

{

siteCollection.Close();

}

B.

if (siteCollection != null)

{

siteCollection.Dispose();

}

C.

siteCollection = null;

D.

siteCollection.WriteLocked = false;

解析:

這是一個考證關于Sharepoint代碼內存泄露的問題,Sharepoint既然是構建于.NET Framework之上的,為什么還存在內存泄露呢?

這是由于某些Sharepoint的辦事器工具(Services Objects) 如: SPSite, SPWeb和記娛到h88285 雖然是Managed Objects,但出于前進其運行效率的必要,它們內部的實今世碼應用了某些UnManaged 的代碼,是以,就造成了你必要自己去辦理內存泄露的問題。

在本題的供選項中,C.D可以顯著的掃除,必要關注的便是A與B。

我們知道,Dispose與Close都可以用于開釋內存,但Close措施只能用在你先自行創建了SPSite工具,然后再去開釋它。假如你是引用(Reference)了一個SPSite工具,你就不能經由過程Close措施去開釋它。

以是我們平日保舉應用Dispose措施來代替Close措施,由于在Dispose措施中終極照樣調用了Close措施,但它是經由過程IDisposable接口來實現的,以是.NET Framework的垃圾收受接收機制會調用 Dispose措施來開釋與此工具相關的內存。 是以本題目精確選項應該是B

相關參考:

http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.spsite.close.aspx

http://msdn.microsoft.com/zh-cn/library/aa973248(v=office.12).aspx

Question 3

You deploy a custom Web Part named WebPart1 to a SharePoint site.

WebPart1 contains the following code segment. (Line numbers are included for reference only.)

01 protected void Page_Load(object sender, EventArgs e)

02 {

03SPSite site = null;

04try

05{

06SPSite site = new SPSite("http://www.contoso.com/default.aspx");

07SPWeb web = site.OpenWeb();

08

09...

10}

11catch

12{

13

14}

15finally

16{

17

18}

19 }

After you deploy WebPart1, users report that the pages on the site load slowly.

You retract WebPart1 from the site.

Users report that the pages on the site load without delay. You need to modify the code in WebPart1 to prevent the pages from loading slowly.

What should you do?

A.

Add the following line of code at line 08:

site.ReadOnly = true;

B.

Add the following line of code at line 13:

site.Dispose();

C.

Add the following line of code at line 17:

site.Dispose();

D.

Add the following line of code at line 17:

site.ReadOnly = true;

解析:

從題意闡發,因為加載了一個用戶定義的Webpart而使頁面出現遲鈍,當然,對付一個Webpart而言可能有許多緣故原由讓頁面出現遲鈍的,比如:當Webpart涉及到與后臺數據庫數據互換時,當Webpart與Webservice辦事交互信息時……等等.

而從本題目供給的代碼中,僅涉及到了一個SPSite工具的創建,以是題目本身就把Webpart出現遲鈍的緣故原由約束于SPSite工具上。

對付A.D是把Site Collection設置和記娛到h88285只讀,即:把Site Collection鎖定,不再進行任何寫入操作。此類操作并不影響頁面的出現,由于頁面的出現原先便是個讀取的歷程。

以是問題歸結到SPSite工具所引起的內存透露上,辦理此問題要經由過程Dispose措施實現,問題是Dispose措施的辦理機會,顯然,此措施應該放在Finally代碼區,由于此區不管你整體代碼是否呈現非常都邑最履行到這里,而假如僅放在Catch區,則當上面的代碼段并無非常時,由SPSite引起的內存透露照樣沒有辦理,由于此內存透露并不屬于Error范疇,以是不會跳到Catch區進行辦理。

以是本題目精確先項應該是C

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

快三平台开户