无法将SPUSER作为参数传递给CAML查询 [英] unable to pass SPUSER as a parameter to CAML query
问题描述
我想将spuser作为参数传递给caml查询
但是当我在下面的代码中尝试过时,它的抛出错误:
使用(SPWeb spWeb = spSite.OpenWeb()){
SPDocumentLibrary objDocLibProjDocLibrary = spWeb.Lists.TryGetList("ProjectDocumentLibrary")as SPDocumentLibrary;
//字符串strsingleProjCodeStageTupleSet ="VGIL_NPR_TBD_STB_050_2017"; //"VGIL_NPR_EMD_STB_993_2017";//"VGIL_NPR_EMD_STB_999_2017";
字符串strstage1 =概念和设计原型开发";//可行性和启动"; //
字符串strnp11user = @"mydomain \ NPD11";
字符串strsingleProjCodeforptp ="VGIL_NPR_TBD_STB_050_2017";
SPUser objuser1 = spWeb.EnsureUser(strnp11user);
//objuser1.LoginName
string strPTPQueryforPDL =< Where>< And< Eq>"
+<< FieldRef Name ='ProjectCode'/>"
+"< Value Type ='Text'>" + strsingleProjCodeforptp +</Value>""
+</Eq>< And< Eq>< FieldRef Name ='AssignedTo'/>'"
+<< Value Type ='User'>" + objuser1.LoginName +</Value></Eq>< Or>< IsNull>"
+< FieldRef Name ='TriggerFromTimerJob'/>'"
+``</IsNull>< Eq>"
+< FieldRef Name ='TriggerFromTimerJob'/>< Value Type ='Text'> NO</Value>"
+</Eq></Or></And<//</Where>/;
SPQuery oQueryProjDocLibCodeStage = new SPQuery();
SPListItemCollection oListItemCollProjDocLibProjCodeStage;
oQueryProjDocLibCodeStage.Query = strPTPQueryforPDL;
oListItemCollProjDocLibProjCodeStage = objDocLibProjDocLibrary.GetItems(oQueryProjDocLibCodeStage);
int counterprojdoclibstage = oListItemCollProjDocLibProjCodeStage.Count;
如果(oListItemCollProjDocLibProjCodeStage!= null& oListItemCollProjDocLibProjCodeStage.Count> 0)
{
foreach(oListItemCollProjDocLibProjCodeStage中的SPListItem singleProjDocLibCodeStageItem)
{
int idofmatchingprojdoclib = Convert.ToInt32(singleProjDocLibCodeStageItem ["ID"]);
}
}
似乎是"/" && gt;< Eq>< FieldRef Name ='AssignedTo'/>"
+<< Value Type ='User'>" + objuser1.LoginName +</Value></Eq>< Or> IsNull"查询行抛出
错误.
为了在caml查询执行后获得正确的项目,应该写些什么?我无法对spuser值进行硬编码
使用NTLM身份验证
本杰明·
尝试并检查它是否对您有用.
< Eq>< FieldRef Name ='AssignedTo'/>'"
+<<值类型='用户'LookupId ='真'>>" + objuser1.Id +</Value></Eq>
如果此信息解决了您的问题,请单击标记为答案" . 投票为有帮助的人" (如果有用)! :)
此致
Gaurav
I want to pass the spuser as a paramter to the caml query
but when i tried teh below code its throwing error:
using (SPWeb spWeb = spSite.OpenWeb()){
SPDocumentLibrary objDocLibProjDocLibrary = spWeb.Lists.TryGetList("ProjectDocumentLibrary") as SPDocumentLibrary;
// string strsingleProjCodeStageTupleSet = "VGIL_NPR_TBD_STB_050_2017"; //"VGIL_NPR_EMD_STB_993_2017";//"VGIL_NPR_EMD_STB_999_2017";
string strstage1 = "Concept And Design Proto Developement";//"Feasibility and Kick Off"; //
string strnp11user =@"mydomain\NPD11";
string strsingleProjCodeforptp = "VGIL_NPR_TBD_STB_050_2017";
SPUser objuser1 = spWeb.EnsureUser(strnp11user);
//objuser1.LoginName
string strPTPQueryforPDL = "<Where><And><Eq>"
+ "<FieldRef Name='ProjectCode' />"
+ "<Value Type='Text'>" + strsingleProjCodeforptp + "</Value>"
+ "</Eq><And><Eq><FieldRef Name='AssignedTo' />"
+ "<Value Type='User'>" + objuser1.LoginName + "</Value></Eq><Or><IsNull>"
+ "<FieldRef Name='TriggerFromTimerJob' />"
+ "</IsNull><Eq>"
+ "<FieldRef Name='TriggerFromTimerJob' /><Value Type='Text'>NO</Value>"
+ "</Eq></Or></And></And></Where>";
SPQuery oQueryProjDocLibCodeStage = new SPQuery();
SPListItemCollection oListItemCollProjDocLibProjCodeStage;
oQueryProjDocLibCodeStage.Query = strPTPQueryforPDL;
oListItemCollProjDocLibProjCodeStage = objDocLibProjDocLibrary.GetItems(oQueryProjDocLibCodeStage);
int counterprojdoclibstage = oListItemCollProjDocLibProjCodeStage.Count;
if (oListItemCollProjDocLibProjCodeStage != null && oListItemCollProjDocLibProjCodeStage.Count > 0)
{
foreach (SPListItem singleProjDocLibCodeStageItem in oListItemCollProjDocLibProjCodeStage)
{
int idofmatchingprojdoclib = Convert.ToInt32(singleProjDocLibCodeStageItem["ID"]);
}
}
it seems , "</Eq><And><Eq><FieldRef Name='AssignedTo' />"
+ "<Value Type='User'>" + objuser1.LoginName + "</Value></Eq><Or><IsNull>" line of query is throwing
error.
in order to get the correct items after caml query execution, what should be written ? i cant hardcode the spuser values
am using NTLM authentication
Hi Benjamin,
try and check whether it works for you.
<Eq><FieldRef Name='AssignedTo' />"
+ "<Value Type='User' LookupId='True'>>" + objuser1.Id+ "</Value></Eq>Please click the 'Mark as Answer' if this post solves your problem or "Vote As Helpful" if it was useful! :)
Regards,
Gaurav
这篇关于无法将SPUSER作为参数传递给CAML查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!