Pergunta

Eu tenho um problema com a configuração do campo no item atualização de evento na biblioteca de documentos com o SharePoint 2007.

Eu tenho a seguinte situação, tenho uma biblioteca de documentos, e, quando eu adicionar um documento baseado em um LookUpField gostaria de adicionar valores para outro campo de pesquisa com o selecionador, mas ele falha.

Mas se eu tiver um documento já na biblioteca de documentos e, em propriedades de edição que eu modificar o item e atualizá-lo, então ele atualizar o campo.

Eu notar alguma inconsistência no presente, a saber, quando eu atualizar eu passar para um campo deste tipo de dados:58;#SomeValue;#59;#SomeValue2;#60;#SomeValue3 ...

Mas quando eu adicionar um documento no modelo i preencher o campo de pesquisa recebo o seguinte material para passar para outro campo de pesquisa com o selecionador:58;#;59;#;#60;#

Então, isso significa que ele passa a IDENTIFICAÇÃO, mas os valores estão vazias, mas parece que eu preciso ter valores também, para fazê-lo funcionar.

I h ave o seguinte código:

public override void ItemUpdating(SPItemEventProperties properties)
        {
            base.DisableEventFiring();
            base.ItemUpdating(properties);

            string nameLookUp = "LookUpField";
            string namePickUp = "LookUpFieldWithPicker";


            string opp = properties.BeforeProperties[namePickUp]==null ? string.Empty : properties.BeforeProperties[namePickUp].ToString();
            string npp = properties.AfterProperties[namePickUp] == null ? string.Empty : properties.AfterProperties[namePickUp].ToString();

            string op = properties.BeforeProperties[nameLookUp] == null ? string.Empty : properties.BeforeProperties[nameLookUp].ToString();
            string np = properties.AfterProperties[nameLookUp] == null ? string.Empty : properties.AfterProperties[nameLookUp].ToString();

            if (!string.IsNullOrEmpty(npp) && opp != npp)
            {
                SPFieldLookupValueCollection value = new SPFieldLookupValueCollection(properties.AfterProperties[namePickUp].ToString());
                properties.AfterProperties[nameLookUp] = properties.AfterProperties[namePickUp];
            }
            else if (!string.IsNullOrEmpty(np) && op != np)
            {
                 properties.AfterProperties[namePickUp] = properties.AfterProperties[nameLookUp];
            }

            base.EnableEventFiring();
        }

Espero que alguém pode me aconselhar algo ...obrigado

Foi útil?

Solução

Tomar de referência para a pesquisa de lista e usar a Lista.GetItemById(Id) para obter o item e toma o valor de coluna e construir a pesquisa de coleção.Exemplo:SPList lookupList=propriedades.da web.listas["lookupListName"];SPListItem lookuplistitem=lookupList.GetItemById(4);//Aqui o Id é o 4 cadeia filedvalue=lookuplistitem["lookupfieldname"];//Qual o campo que está a tomar como de pesquisa agora a construir o fieldlookup e faça o mesmo para todos a identificação e a construção de fieldlookupvaluecollection.

A lista.GetItemById(Id) consulta é mais rápido, então você não vai ficar muito problemas de desempenho.

Outras dicas

Conforme meu entendimento, há duas partir de pesquisas mesma lista/biblioteca.SPFieldLookupValueCollection para cada campo é diferente.O formato é a IDENTIFICAÇÃO;#Valor aqui ID é listitem de IDENTIFICAÇÃO e o Valor é o que você armazenou para os respectivos campos na lista de pesquisa.

Para "LookUpField" ID";#LookUpFieldValue"

Para "LookUpFieldWithPicker" ID";#LookUpFieldWithPickerValue"

Antes de actualizar o listitem você tem que construir a pesquisa de coleção como esta

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top