我有一个场景,请帮我构建一个caml查询。
Sharepoint List 1 包含列:
Sharepoint List 2 包含列:
ID(list 1)=Cust_ID(list 2)
假设一个人从特定分支登录,首先检查当前登录分支。 然后在 asp网格视图中显示Sharpeoint列表2的所有内容,但仅显示当前分支的所有内容(分支将从列表1中获取)。意味着连接查询是必要的,以及检查当前登录分支的条件。
请帮我构建一个caml查询,我尝试了一些caml查询构建器,但dint得到了结果。
答案 0 :(得分:0)
你不能加入。在这种情况下你必须查找分支到List2,如果有多个brach为1个用户或两者你可以创建模型,如你要查询到第二个列表ID和分支所以如果你没有分支名称或分支代码,你可以获得该用户的所有数据加载该数据进行建模,你可以从模型中选择你想要的东西
public class AllDatas
{
public AllDatas(SplistItem item)
{
CustomerName = item["CustomerName"]
Branch = item["Branch"]
Product = item["Product"]
.
.
.
}
string CustomerName {get;set}
string Branch {get;set;}//this can be int what evet you want
string Product Name {get;set}
int Quantity {get;set}
int Value {get;set}
}
我假设您有分支和ID,所以如果您没有ID并且只有分支,那么您应该使用Branch来获取ID以获取ID以查询List2,您可以使用相同的caml和方式从list1获取数据。
using(SPSite oSiteCollection = new SPSite("http://Server_Name"))
{
using(SPWeb oWebsite = oSiteCollection.OpenWeb("Website_URL"))
{
SpList list2Col = oWebsite.Lists["List2"];
SPListItemCollection list2 = list2Col.GetItems("<Query><Where><Eq><FieldRef Name='Cust_ID' /><Value Type='Number'>"Your Customer ID From List1"</Value></Eq></Where></Query>");
List<AllDatas> myDatas = new List<AllDatas>();
foreach(SpListItem item in list2)
{
myDatas.add(new AllDatas(item));
}
var resultWithCorrectBranch = myDatas.Where(t=>t.Branch=="something"
}
}