Как я могу получить идентификатор подключенного элемента ListView?
-
10-12-2019 - |
Вопрос
У меня есть три подключенных веб-частей ListView на странице приложения, и я хочу иметь возможность получить доступ к элементу, выбранному в каждой веб-части.Это не выбрано как в «флажках», а скорее подключенный элемент, который передает значение фильтра к следующей веб-части.Я пробовал
myWebPart.Connections // empty
myWebPart.FilterValue // null
myWebPart.ConnectionID // null
.
и практически все другие свойства моей веб-части.Нет ли способа получить идентификатор соединения элемента?
Решение
I created three web parts connected together and filterable using Title:
Choose a color -> Choose a fruit -> View fruit details.
I created the following selector (jQuery required):
$('img[alt="Selected"]').parent().next().children('div.ms-vb');
Which returns an array of the selected elements which have an ID attribute. You could then do a simple each and do the work you want with each 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)
Shows up like this in Chrome console:
I think this will work as long as the you use the Title (linked to item) column in the web parts.
Другие советы
If you use JSLink instead, I think you can connect to the items in the ListView Web Part like this:
- In a location of your choice (such as SiteAssets library of your site, or in _catalogs/masterpage), create new JavaScript file.
- In the file, add the code below
- In your web part, reference this JavaScript file in the JSLink setting, like ~/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);
})();
Reference: