Pergunta

Tenho uma lista "Pedidos" em SP, onde tenho alguns dados.A definição de lista e a instância foram criadas anteriormente no Visual Studio e implantadas com êxito.

Hoje abri o VS novamente e adicionei um novo campo de escolha "OrderType" ao schema.xml arquivo.Também adicionei este campo a todas as visualizações.Agora, posso vê-lo nas páginas de exibição de lista. Posso definir com êxito esse campo no codebehind ao adicionar um novo item:

SPListItem item = SPContext.Current.List.AddItem();
item["Title"] = "MyNewTitle";
item["OrderType"] = "Choice1";
item.Update();

Mas, quando tento acessar este campo do Powershell, recebo um erro:

$web = Get-SPWeb http://myweb
$list = $web.lists["Orders"]
$items = $list.items
$item = $items[0] # Item with filled fields
$item["OrderType"] # Returns nothing
$item["OrderType"] = "Choice1" # Returns error
$item.Update() 

Erro:

Unable to index into an object of type Microsoft.SharePoint.SPListItem.
At line:1 char:7
+ $item[ <<<< "OrderType"] = "Choice1"
    + CategoryInfo          : InvalidOperation: (OrderType:String) [], RuntimeException
    + FullyQualifiedErrorId : CannotIndex

Na verdade, não consigo encontrar o campo na web:

$list.Fields.GetField("OrderType")

Erro:

Exception calling "GetField" with "1" argument(s): "Column 'OrderType' does not exist. It may have been deleted by another user."
At line:1 char:22
+ $list.Fields.GetField <<<< ("OrderType")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Tenho permissões de acesso total para o item.Ainda consigo ver esse campo e seus dados nas minhas páginas de exibição de lista.

Onde estou errado?

Foi útil?

Solução 2

Encontrei a solução, simplesmente abri meu campo "problemático" via "Lista" -> "Configurações do site" -> "OrderType" e pressionei "OK" (não fiz nenhuma alteração).Agora posso acessá-lo via Powershell.Graças a esta postagem (trata-se de colunas de sites, mas a solução é semelhante)!

Outras dicas

Você pode encontrar exemplos do PowerShell aqui para obter/definir campos de escolha:http://social.technet.microsoft.com/wiki/contents/articles/20831.sharepoint-a-complete-guide-to-getting-and-setting-fields-using-powershell.aspx#Set_and_Get_a_Choice_Field

Por exemplo, você deve ser capaz de definir o valor do seu campo assim:

$item["OrderType"] = $list.Fields["OrderType"].GetFieldValue("Choice1");            
$item.Update();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top