Como posso obter a ID do ligado Item ListView?
-
10-12-2019 - |
Pergunta
Eu tenho três conectado ListView web parts em uma página de aplicativo, e eu quero ser capaz de acessar o item que está selecionado em cada web part.Isso não é selecionado como em "caixas", mas, sim, ligado item que está passando o valor do filtro para a próxima parte da web.Eu tentei
myWebPart.Connections // empty
myWebPart.FilterValue // null
myWebPart.ConnectionID // null
e praticamente todos os outros bens da minha web part.Não existe uma forma de obter o ID do item que está sendo conectado?
Solução
Eu criei três peças web ligados entre si e que podem ser filtradas usando-Título:
Escolha uma cor -> Escolha uma fruta -> modo de Exibição de frutas detalhes.
Eu criei o seguinte seletor (jQuery):
$('img[alt="Selected"]').parent().next().children('div.ms-vb');
Retorna uma matriz de elementos selecionados que ter um atributo ID.Em seguida, você pode fazer uma simples cada um e faça o trabalho que você deseja com cada ID.
$('img[alt="Selected"]').parent().next().children('div.ms-vb').each(function(i){
console.log($(this).attr('id'));
});
// will give you:
// 3 (Blue)
// 2 (Blueberry)
Mostra como este no Chrome console:
Eu acho que isso vai funcionar, desde que você use o Título (vinculado ao item) coluna na web parts.
Outras dicas
Se você usar JSLink em vez disso, eu acho que você pode ligar para os itens do ListView Web Part como este:
- Em um local de sua escolha (como SiteAssets biblioteca de seu site, ou em _catalogs/masterpage), criar novo ficheiro de JavaScript.
- No arquivo, adicione o código abaixo
- Em seu web part, fazer referência a esse arquivo JavaScript no JSLink, como ~/site/SiteAssets/news_ui.js
(function () {
// Initialize the variables for overrides objects
var overrideCtx = {};
overrideCtx.Templates = {};
overrideCtx.Templates.Fields = {
'ID': { 'ItemID' : ctx.CurrentItem.ID }
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();
Referência: