我有一些关于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;
}
}
}
}
}
此外,还有其他方法可以访问特定数据,在这种情况下,活动列表没有遍历每一行,试图匹配正确的用户,然后查找活动列表中的值?
我可以将行本身存储为元数据的成员吗?如果添加了另一个用户,我的引用是否仍然指向我想要的用户列表行?
答案 0 :(得分:4)
您需要学习CAML并执行CAML查询。
创建一个SPQuery
对象。将它的Query属性设置为您需要的属性,然后使用list.getItems(SPQuery query)
来获取与您的查询匹配的项目。
你可以自己找出它的CAML;如果您想要处理SharePoint代码,则需要了解它。有很多关于基本语法的信息,以及基于更加用户友好的语法帮助自动生成它的工具。
当项目添加到列表或在列表中更新时,项目不会动态更新;您需要重新运行查询。