关于在sharepoint中开发时的最佳实践的一般性问题

时间:2012-02-07 16:03:02

标签: c# sharepoint sharepoint-2010

我有一些关于SharePoint最佳实践(2010)的一般性问题。

我目前正在实现一项要求我从列表中获取信息的功能。我不太清楚如何管理这些信息。我创建了一个类来帮助我管理这些信息(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;
                  }
              }
          }
      }
}

此外,还有其他方法可以访问特定数据,在这种情况下,活动列表没有遍历每一行,试图匹配正确的用户,然后查找活动列表中的值?

我可以将行本身存储为元数据的成员吗?如果添加了另一个用户,我的引用是否仍然指向我想要的用户列表行?

1 个答案:

答案 0 :(得分:4)

您需要学习CAML并执行CAML查询。

创建一个SPQuery对象。将它的Query属性设置为您需要的属性,然后使用list.getItems(SPQuery query)来获取与您的查询匹配的项目。

你可以自己找出它的CAML;如果您想要处理SharePoint代码,则需要了解它。有很多关于基本语法的信息,以及基于更加用户友好的语法帮助自动生成它的工具。

当项目添加到列表或在列表中更新时,项目不会动态更新;您需要重新运行查询。