Domanda

Io uso SP Cliente e voglio tornare ListItemCollection che verrà riempita con oggetti provenienti da specifiche punto di vista che ho scelto. Ottengo stringa ViewQuery inviando indice di vista in viewcollection. Il problema è in parte in cui mando camlQuery al metodo GetItems "ListItemCollection listItems = list.GetItems (camlQuery);" perché qualunque camlquery viene inviato al allways GetItems ho tutti gli elementi dalla lista al posto di quelle filtrato, nonostante il fatto che stringa di camlquery sono buoni e diverso ogni volta. Qualche suggerimento?

        clientContext.ExecuteQuery();
        List list = site.Lists.GetByTitle(SPList);
        clientContext.Load(list);
        clientContext.ExecuteQuery();

        ViewCollection viewItems = list.Views;
        clientContext.Load(viewItems);
        clientContext.ExecuteQuery();


        CamlQuery camlQuery = new CamlQuery();
        camlQuery.ViewXml = list.Views[index].ViewQuery;

        ListItemCollection listItems = list.GetItems(camlQuery);
        clientContext.Load(listItems);
        clientContext.ExecuteQuery();
È stato utile?

Soluzione

Ho avuto questo di recente.

La versione client di OM CamlQuery si comporta in modo diverso a come si pensa.

Controllare i risultati di list.Views [0] .ViewQuery.

Se ha un tag intorno ad esso, rimuoverlo prima di assegnare ad esso CamlQuery.ViewXml. (Forse un po 'complicato)

Se non ha un tag intorno ad esso, aggiungerne uno. (Facile)

Poi assegnarlo a CamlQuery.ViewXml. Quasi certo questo lavoro volontà, come i sintomi che si descrivono sono identici a quello che avevo, tranne che stavo usando il modello a oggetti di Silverlight. Stessi oggetti, tuttavia.

EDIT:

Inoltre, snellire il codice, hai un sacco di "blocco" le operazioni di là che probabilmente non c'è bisogno ...

clientContext.ExecuteQuery();
List list = site.Lists.GetByTitle(SPList);
ViewCollection viewItems = list.Views;
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = list.Views[index].ViewQuery;
ListItemCollection listItems = list.GetItems(camlQuery);

clientContext.Load(list);
clientContext.Load(viewItems);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top