Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Caml筛选Sharepoint列表时出现问题_C#_Sharepoint_Caml_Csom - Fatal编程技术网

C# 使用Caml筛选Sharepoint列表时出现问题

C# 使用Caml筛选Sharepoint列表时出现问题,c#,sharepoint,caml,csom,C#,Sharepoint,Caml,Csom,我正在尝试筛选SharePoint列表,以便只有包含字符串的管理字段为“是”的项目才会显示,但每当我到达ctx.ExecuteQuery()语句时,我的程序就会崩溃。我相信我的CAMLQuery的结构是正确的,所以我不确定我是否只是用错了,或者是否遗漏了什么。任何帮助都会很好!谢谢我目前拥有的代码发布如下: Web myWeb = ctx.Web; List myList = myWeb.Lists.GetByTitle("Company Employees"); SPClient.View v

我正在尝试筛选SharePoint列表,以便只有包含字符串的管理字段为“是”的项目才会显示,但每当我到达ctx.ExecuteQuery()语句时,我的程序就会崩溃。我相信我的CAMLQuery的结构是正确的,所以我不确定我是否只是用错了,或者是否遗漏了什么。任何帮助都会很好!谢谢我目前拥有的代码发布如下:

Web myWeb = ctx.Web;
List myList = myWeb.Lists.GetByTitle("Company Employees");
SPClient.View view = myList.DefaultView;
CamlQuery qry = new CamlQuery();
qry.ViewXml = "<Query>" + "< Where >" + "<Eq>" + "< FieldRef Name='Management'/>" + "< Value Type='Text'>Yes</ Value >" + "</Eq>" + "</ Where >" + "</ Query >";
myList.GetItems(qry);
ListItemCollection listItems = myList.GetItems(qry);
ctx.Load(listItems);
ctx.ExecuteQuery();
webmyweb=ctx.Web;
List myList=myWeb.Lists.GetByTitle(“公司员工”);
SPClient.View View=myList.DefaultView;
CamlQuery qry=新的CamlQuery();
qry.ViewXml=“+”“+”“+”是“+”;
myList.GetItems(qry);
ListItemCollection listItems=myList.GetItems(qry);
ctx.Load(列表项);
ctx.ExecuteQuery();

您的代码似乎缺少将缠绕在CAML中的
标记周围的
标记

通过添加
根元素,正确的CAML XML如下所示:

qry.ViewXml = 
    "<View>"+
         "<Query>"+
            "<Where>"+
                 "<Eq>"+
                     "<FieldRef Name='Management'/>"+
                     "<Value Type='Text'>Yes</Value>"+
                 "</Eq>"+
            "</Where>"+
        "</Query>"+
   "</View>";
qry.ViewXml=
""+
""+
""+
""+
""+
“是的”+
""+
""+
""+
"";
其他故障排除

为了帮助进行故障排除,您可以尝试通过JavaScript客户端对象模型运行相同的查询

  • 访问Internet Explorer中的SharePoint站点并点击F5打开开发人员工具
  • 在Console选项卡上,输入以下代码行,然后(通过按enter键或Ctrl+enter键)一次执行一行代码:
  • -

    var ctx=new SP.ClientContext();
    var list=ctx.get_web().get_list().getByTitle(“公司员工”);
    var qry=new SP.CamlQuery();
    qry.set_viewXml(“是”);
    var items=list.getItems(qry);
    ctx.荷载(项目);
    executeQueryAsync(函数(){alert(“success!”);},函数(sender,args){alert(args.get_message());});
    
    您的代码似乎缺少将缠绕在CAML中的
    标记周围的
    标记

    通过添加
    根元素,正确的CAML XML如下所示:

    qry.ViewXml = 
        "<View>"+
             "<Query>"+
                "<Where>"+
                     "<Eq>"+
                         "<FieldRef Name='Management'/>"+
                         "<Value Type='Text'>Yes</Value>"+
                     "</Eq>"+
                "</Where>"+
            "</Query>"+
       "</View>";
    
    qry.ViewXml=
    ""+
    ""+
    ""+
    ""+
    ""+
    “是的”+
    ""+
    ""+
    ""+
    "";
    
    其他故障排除

    为了帮助进行故障排除,您可以尝试通过JavaScript客户端对象模型运行相同的查询

  • 访问Internet Explorer中的SharePoint站点并点击F5打开开发人员工具
  • 在Console选项卡上,输入以下代码行,然后(通过按enter键或Ctrl+enter键)一次执行一行代码:
  • -

    var ctx=new SP.ClientContext();
    var list=ctx.get_web().get_list().getByTitle(“公司员工”);
    var qry=new SP.CamlQuery();
    qry.set_viewXml(“是”);
    var items=list.getItems(qry);
    ctx.荷载(项目);
    executeQueryAsync(函数(){alert(“success!”);},函数(sender,args){alert(args.get_message());});
    
    发布帮助解决方案多亏了您的帮助,我才知道如何使用以下代码创建具有所需筛选的新视图。主要问题是Caml查询——在创建视图之前,我必须删除and标记,然后删除几行。以下是我的工作方案:

    Web myWeb = ctx.Web;
    List myList = myWeb.Lists.GetByTitle("Company Employees");
    SPClient.View view = myList.DefaultView;
    CamlQuery qry = new CamlQuery();
    qry.ViewXml =
    "<Where><Eq><FieldRef Name=\"Management\"/><Value Type='Text'>Yes</Value></Eq></Where>";
    ViewCollection viewColl = myList.Views;
    string[] viewFields = { "Title", "Promoted", "Intern", "Management" };
    ViewCreationInformation creationInfo = new ViewCreationInformation();
    creationInfo.Title = "Management";
    creationInfo.RowLimit = 50;
    creationInfo.ViewFields = viewFields;
    creationInfo.ViewTypeKind = ViewType.None;
    creationInfo.SetAsDefaultView = false;
    creationInfo.Query = qry.ViewXml;
    viewColl.Add(creationInfo);
    ctx.ExecuteQuery();
    
    webmyweb=ctx.Web;
    List myList=myWeb.Lists.GetByTitle(“公司员工”);
    SPClient.View View=myList.DefaultView;
    CamlQuery qry=新的CamlQuery();
    qry.ViewXml=
    “是”;
    ViewCollection viewColl=myList.Views;
    string[]视图字段={“Title”、“Promoted”、“Intern”、“Management”};
    ViewCreationInformation creationInfo=新建ViewCreationInformation();
    creationInfo.Title=“管理”;
    creationInfo.RowLimit=50;
    creationInfo.ViewFields=视图字段;
    creationInfo.ViewTypeKind=ViewType.None;
    creationInfo.SetAsDefaultView=false;
    creationInfo.Query=qry.ViewXml;
    viewColl.Add(creationInfo);
    ctx.ExecuteQuery();
    
    发布帮助解决方案多亏了您的帮助,我才知道如何使用以下代码创建具有所需筛选的新视图。主要问题是Caml查询——在创建视图之前,我必须删除and标记,然后删除几行。以下是我的工作方案:

    Web myWeb = ctx.Web;
    List myList = myWeb.Lists.GetByTitle("Company Employees");
    SPClient.View view = myList.DefaultView;
    CamlQuery qry = new CamlQuery();
    qry.ViewXml =
    "<Where><Eq><FieldRef Name=\"Management\"/><Value Type='Text'>Yes</Value></Eq></Where>";
    ViewCollection viewColl = myList.Views;
    string[] viewFields = { "Title", "Promoted", "Intern", "Management" };
    ViewCreationInformation creationInfo = new ViewCreationInformation();
    creationInfo.Title = "Management";
    creationInfo.RowLimit = 50;
    creationInfo.ViewFields = viewFields;
    creationInfo.ViewTypeKind = ViewType.None;
    creationInfo.SetAsDefaultView = false;
    creationInfo.Query = qry.ViewXml;
    viewColl.Add(creationInfo);
    ctx.ExecuteQuery();
    
    webmyweb=ctx.Web;
    List myList=myWeb.Lists.GetByTitle(“公司员工”);
    SPClient.View View=myList.DefaultView;
    CamlQuery qry=新的CamlQuery();
    qry.ViewXml=
    “是”;
    ViewCollection viewColl=myList.Views;
    string[]视图字段={“Title”、“Promoted”、“Intern”、“Management”};
    ViewCreationInformation creationInfo=新建ViewCreationInformation();
    creationInfo.Title=“管理”;
    creationInfo.RowLimit=50;
    creationInfo.ViewFields=视图字段;
    creationInfo.ViewTypeKind=ViewType.None;
    creationInfo.SetAsDefaultView=false;
    creationInfo.Query=qry.ViewXml;
    viewColl.Add(creationInfo);
    ctx.ExecuteQuery();
    
    管理字段是什么类型的列?我不确定是否理解您的问题。它只是一个包含字符串的列。我只是想用它来测试过滤,所以我正在检查里面的字符串是否为“是”,谢谢!我想确保它不是一个Yes/No字段,它需要以不同于文本和选择字段的方式进行查询。啊,好的!我将编辑问题,使其更清晰。请将解决方案作为答案发布,而不是作为问题的更新。我已回滚您的编辑,您可以在中看到。这是为了避免混淆。谢谢。管理领域是什么类型的专栏?我不确定我是否理解你的问题。它只是一个包含字符串的列。我只是想用它来测试过滤,所以我正在检查里面的字符串是否为“是”,谢谢!我想确保它不是一个Yes/No字段,它需要以不同于文本和选择字段的方式进行查询。啊,好的!我将编辑这个问题,以便