Esta semana eu estava implementando um "evoluindo" solução para um cliente que usa o BDC e SPQuery e encontrei alguma dificuldade usando SPQuery contra uma biblioteca de documentos que contêm pastas. Linha inferior: atribuir "recursiva" para o atributo de exibição da consulta.
Meu cenário:
- Na segunda-feira, Eu carregar um documento e fornecer alguns dados meta.
- Na semana seguinte, Eu carregar um novo documento. Grande parte meta dados do documento esta nova baseia-se no documento que fiz upload na segunda-feira (que chamamos o "documento principal").
- Nós criamos uma fachada de serviço web que fornece uma interface de BDC amigável para a lista para que os usuários podem facilmente localizar esse documento segunda-feira através de uma pesquisa de título.
- Uma coluna de dados BDC fornece uma interface de usuário amigável. (Isto é parte da minha tentativa de usar BDC para uma coluna de pesquisa mais amigável).
O serviço de fachada do BDC final usa uma consulta como esta para fazer a pesquisa:
// Usado U2U ferramenta para auxiliar na geração esta consulta CAML. oQuery.Query = "<Onde>"; se (titleFilter.Length > 0) oQuery.Query = " <E>"; oQuery.Query = " <E>" + " <GEQ>" + " <Nome FieldRef = "DocumentId" />" + " <Tipo de valor = "Text">" + minId + "</Valor>" + " </GEQ>" + " <Leq>" + " <Nome FieldRef = "DocumentId" />" + " <Tipo de valor = "Text">" + maxId + "</Valor>" + " </Leq>" + " </E>"; se (titleFilter.Length > 0) oQuery.Query = " <Contém>" + " <Nome FieldRef = "Title" />" + " <Tipo de valor = "Text">" + titleFilter + "</Valor>" + " </Contém>" + " </E>"; oQuery.Query = "</Onde>";
Durante a fase inicial de desenvolvimento, Isso funcionou muito bem. No entanto, Introduzimos pastas no diretório para resolver alguns problemas e de repente, meu seletor de BDC não retorna nenhum resultado. Eu segui isso ao fato de que o SPQuery nunca iria retornar todos os resultados. Usamos pastas principalmente para permitir que vários arquivos com o mesmo nome a ser carregado, mas com diferentes dados meta. Quando o arquivo é carregado, Vamos criar uma pasta com base na identificação do item da lista e em seguida, mova o arquivo lá (Eu escrevi sobre isso here; Já tivemos resultados mistos com esta abordagem, mas em todo o, está funcionando bem). O usuário não se importam sobre pastas e na verdade, realmente não entendo que existem todas as pastas. Temos configurado todos os pontos de vista da biblioteca para mostrar itens sem considerar pastas.
Eu bati esse problema duas vezes como a execução técnica evoluiu e resolvido isso de forma diferente cada vez. A primeira vez, Eu não estava usando o operador CONTAINS na consulta. Sem um operador CONTAINS, Eu era capaz de resolver o problema, especificando o modo de exibição contructor do SPQuery. Em vez de usar o construtor padrão:
SPList t: Microsoft.SharePoint.SPList oList = web.Listas["Documentos"];
SPQuery oQuery = Novo SPQuery();
Em vez disso usei um construtor que especificou uma vista:
SPList t: Microsoft.SharePoint.SPList oList = web.Listas["Documentos"];
SPQuery oQuery = Novo SPQuery(oList.Views["Todos os documentos"]);
Isso resolveu o problema e comecei a receber meus resultados.
Em seguida, adicionei o operador CONTAINS na mistura e quebrou novamente. Verifica-se que o operador CONTAINS, tanto quanto eu posso dizer, Não funciona com a vista da mesma forma que a um simples GEQ / Operadores LEQ. Eu fiz alguma pesquisa e aprendi que ViewAttributes a consulta deve ser definido como "Recursiva", como em:
oQuery.ViewAttributes = "Escopo = "Recursive"";
Isso resolveu o problema para CONTAINS. Na verdade, Isto também resolveu o meu problema de pesquisa original e se eu tivesse especificado o recursivo atributo pela primeira vez, Eu não encontraria com a questão novamente.
O fato de que uma visão-baseada SPQuery funciona para alguns operadores (GEQ/LEQ) e outros não (CONTÉM), juntamente com o fato de que os KPIs não parecem trabalhar em conjunto com pasta contendo o documento bibliotecas conduz me acreditar que SPQuery tem alguns problemas de ortogonalidade.
Agradecimentos especiais:
- O pessoal da R22 e sua ferramenta de consulta.
- Grande de Michael Hoffer "aprender fazendo" post do blog, Comentários e respostas.
</fim>
http://www.batteryfast.co.uk/asus/w3v.htm Asus w3v bateria,
http://www.batteryfast.co.uk/asus/w3000a.htm Asus w3000a bateria,
http://www.batteryfast.co.uk/asus/w3000.htm Asus w3000 bateria,
http://www.batteryfast.co.uk/asus/w3000v.htm Asus w3000v bateria,
http://www.batteryfast.co.uk/asus/a31-s5.htm Asus a31-s5 bateria,
http://www.batteryfast.co.uk/asus/a32-s5.htm Asus a32-s5 bateria,
http://www.batteryfast.co.uk/asus/s52n.htm Asus s52n bateria,
http://www.batteryfast.co.uk/asus/s5000.htm Asus s5000 bateria,
http://www.batteryfast.co.uk/asus/s5200n.htm Asus s5200n bateria,
http://www.batteryfast.co.uk/asus/s5n.htm Asus s5n bateria,
http://www.batteryfast.co.uk/asus/90-naa1b1000.htm Asus 90-naa1b1000 bateria,
http://www.batteryfast.co.uk/asus/s2691061.htm Asus s2691061 bateria,
http://www.batteryfast.co.uk/asus/a42-v6.htm Asus a42-v6 bateria,
http://www.batteryfast.co.uk/asus/a32-u5.htm Asus a32-u5 bateria,
http://www.batteryfast.co.uk/asus/u5f.htm Asus u5f bateria,
http://www.batteryfast.co.uk/asus/u5a.htm Asus u5a bateria,
http://www.batteryfast.co.uk/asus/u5f.htm Asus u5f bateria,
http://www.batteryfast.co.uk/asus/u5.htm Asus u5 bateria,
http://www.batteryfast.co.uk/compaq/nw8000.htm Compaq nw8000 bateria,
http://www.batteryfast.co.uk/compaq/nc8000.htm Compaq nc8000 bateria,
http://www.batteryfast.co.uk/compaq/v1000.htm Compaq v1000 bateria,
http://www.batteryfast.co.uk/compaq/nc6000.htm Compaq nc6000 bateria,
http://www.batteryfast.co.uk/compaq/nx5000.htm Compaq nx5000 bateria,
http://www.batteryfast.co.uk/compaq/n600.htm Compaq n600 bateria,
http://www.batteryfast.co.uk/compaq/n600c.htm Compaq n600c bateria,
http://www.batteryfast.co.uk/compaq/n610c.htm Compaq n610c bateria,
http://www.batteryfast.co.uk/compaq/n610v.htm Compaq n610v bateria,
http://www.batteryfast.co.uk/compaq/n620c.htm Compaq n620c bateria,
http://www.batteryfast.co.uk/compaq/e500.htm Compaq e500 bateria,
http://www.batteryfast.co.uk/compaq/e500s.htm Compaq e500s bateria,
http://www.batteryfast.co.uk/compaq/v300.htm Compaq v300 bateria,
http://www.batteryfast.co.uk/compaq/v500.htm Compaq v500 bateria,
http://www.batteryfast.co.uk/compaq/pp2060.htm Compaq pp2060 bateria,
http://www.batteryfast.co.uk/compaq/nx9000.htm Compaq nx9000 bateria,
http://www.batteryfast.co.uk/compaq/nx9005.htm Compaq nx9005 bateria,
http://www.batteryfast.co.uk/compaq/nx9010.htm compaq nx9010 bateria,
http://www.batteryfast.co.uk/compaq/nx9020.htm Compaq nx9020 bateria,
http://www.batteryfast.co.uk/compaq/n110.htm Compaq n110 bateria,
http://www.batteryfast.co.uk/compaq/n110s.htm Compaq n110s bateria,
http://www.batteryfast.co.uk/compaq/pp2101x.htm Compaq pp2101x bateria,
http://www.batteryfast.co.uk/compaq/presario-2100.htm compaq presario 2100 bateria,
http://www.batteryfast.co.uk/compaq/ze4000.htm Compaq ze4000 bateria,
http://www.batteryfast.co.uk/compaq/f4809a.htm Compaq f4809a bateria,
http://www.batteryfast.co.uk/compaq/f4812a.htm Compaq f4812a bateria,
http://www.batteryfast.co.uk/dell/inspiron-700m.htm bateria do dell inspiron 700m,
http://www.batteryfast.co.uk/dell/inspiron-710m.htm bateria do dell inspiron 710m,
http://www.batteryfast.co.uk/dell/latitude-x200.htm bateria do Dell latitude X200,
http://www.batteryfast.co.uk/dell/8u443.htm Dell 8u443 bateria,
http://www.batteryfast.co.uk/dell/312-0058.htm Dell 312-0058 bateria,
Você sabe que o StringBuilder é prática recomendada para a criação de cadeias de caracteres longas, direito?