2012-02-07 29 views
0

我有幾個有關SharePoint(2010)最佳做法的常見問題。有關在SharePoint中進行開發時的最佳做法的一般問題

我目前正在實現一項功能,需要我從列表中獲取信息。我不太確定如何管理這些信息。我創建了一個幫助我管理這些信息的類(User.cs)。我在當前在特定列表中搜索值的類中有一個getter。我應該如何處理價值?我是否應該將它保留在成員中,並且僅在其主題發生變化時進行刷新,或者每次獲得時都應該從列表中刷新值?

private void doesUserHasActivities(){ 
     using(SPSite site = new SPSite("http://vmsharepoint2010/")){ 
      using(SPWeb web = site.openWeb("http://vmsharepoint2010/")){ 
       SPList list = web.list["Users"]; 
       SPListItem user; 
       /*Information values is refresh each time its accessed, is this bad ?*/ 
       for(int i=0; i < list.items.length; i++){ 
        user = list.item[i]; 
        string accName = user["Acc_Name"]; 
        if(accName == this.providedAccountname){//providedAccountname from a TextBox 
         //found the user i wanted into the list 
         //look if the list has data 
         bool hasActivities = user["Activities"] != null; 
        } 
       } 
      } 
     } 
} 

此外,有沒有其他的方法來訪問特定的數據,在這種情況下,活動列表,而無需通過每個行循環試圖給正確的用戶相匹配,然後在活動列表中查找值是多少?

我可以將行本身存儲爲元數據的成員嗎?如果添加了另一個用戶,我的參考是否仍然指向我想要的用戶列表的行?

+0

您可能會在[sharepoint.se] – 2012-02-07 16:20:05

回答

4

您需要學習CAML並執行CAML查詢。

創建一個SPQuery對象。將它的查詢屬性設置爲您所需要的,然後使用list.getItems(SPQuery query)來獲取與您的查詢匹配的項目。

你可以自己找出CAML;如果您想要處理SharePoint代碼,則需要學習它。有許多關於基本語法的信息,以及基於更多用戶友好語法來幫助自動生成它的工具。

將項目添加到列表中或在列表中更新時,項目不會動態更新;您將需要重新運行查詢。

+0

上得到更好的回覆非常感謝:)我會upvote,但我失去了我所有的代表! – 2012-02-07 16:19:27

+0

兩點:1.)你也可以看看LINQ和SPMetal。 2.)如果你沒有給出好的答案,那麼一些可以幫助你的人只能提供粗略的答案作爲評論。 – 2012-02-07 17:05:42

+1

我會阻止任何不瞭解CAML的人使用LINQ to SharePoint。 LINQ比CAML功能強大得多,所以如果你使用不能轉換成CAML的LINQ語句,你將會遇到運行時錯誤或效率極低的代碼,這很容易做到。一旦你瞭解了它的侷限性,LINQ to SharePoint可以成爲一個有用的工具。 – Servy 2012-02-07 17:08:05