interrogazione CAML con più di multiplo E / O genera SPException “Uno o più tipi di campo non sono installati correttamente. Vai alla pagina l'elenco delle impostazioni per eliminare questi campi “.

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/10222

  •  16-10-2019
  •  | 
  •  

Domanda

Ho bisogno di costruire una query CAML in fase di esecuzione in base all'input dell'utente. La query CAML potrebbe essere semplice come

<Where>
  <Eq>
    <FieldRef Name="Status" />
    <Value Type="Text">Awaiting Completion</Value>
  </Eq>
</Where>

o potrebbero includere multipla AND e OR come

<Where>
  <Or>
    <Or>
      <Eq>
        <FieldRef Name="Status" />
        <Value Type="Text">Awaiting Completion</Value>
      </Eq>
      <Eq>
        <FieldRef Name="Status" />
        <Value Type="Text">Ongoing</Value>
      </Eq>
    </Or>
    <Eq>
      <FieldRef Name="status" />
      <Value Type="Text">Postponed</Value>
    </Eq>
  </Or>
</Where>

Il problema è che, non appena aggiungo un terzo Stato per controllare come nella query sopra di esso genera uno SPException

"Uno o più tipi di campo non sono installato correttamente. Vai alla lista pagina delle impostazioni per eliminare questi campi "

Un frammento di codice rapido per riprodurre il problema:

   using (SPSite spSite = new SPSite("http://sp2010"))
            {
                using (SPWeb spWeb = spSite.OpenWeb("/test"))
                {
                    SPQuery spQuery = new SPQuery();
                    spQuery.Query = "<Where><Or><Or><Eq><FieldRef Name=\"Status\" /><Value Type=\"Text\">Awaiting Completion</Value></Eq><Eq><FieldRef Name=\"Status\" /><Value Type=\"Text\">Ongoing</Value></Eq></Or><Eq><FieldRef Name=\"status\" /><Value Type=\"Text\">Postponed</Value></Eq></Or></Where>";                    
                    SPListItemCollection spListItemCollection = spWeb.Lists["Actions"].GetItems(spQuery);
                    foreach(SPListItem spListItem in spListItemCollection)
                    {
                        Console.WriteLine(spListItem.Title);
                    }
                }
            }

            Console.ReadKey();

Tutte le idee?

È stato utile?

Soluzione

Ok, sto girando il mio commento in risposta.
Onse in un po 'tutti stanno facendo un errori di battitura -. Per risolvere il problema si dovrebbe usare "Stato" al posto di "status" in 3 ° <Eq>

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top