无法将SPUSER作为参数传递给CAML查询 [英] unable to pass SPUSER as a parameter to CAML query

查看:81
本文介绍了无法将SPUSER作为参数传递给CAML查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆