none
Обработчик клика по списку в представлении AllItems.aspx RRS feed

  • Вопрос

  • Здравствуйте.
    Подскажите, пожалуйста, можно ли каким то образом сделать обработчик "отмечания/выделения" галочкой элемента списка в представлении AllItems.aspx?

    Нужно чтобы в обработчик попадал ID выделенного галочкой слева элемента (если выделен только один элемент) 

    Вообще такое возможно?

     




    • Изменено VARD32 14 декабря 2020 г. 9:21
    14 декабря 2020 г. 9:19

Ответы

  • К выделенным в списке элементам можно обращаться через CSOM, SP.ListOperation.Selection.getSelectedItems() Method, пример здесь.

    var context = SP.ClientContext.get_current();
    var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context);

    Пример:

    function getSelectedItems(OnSuccess, OnError) {
        var context = SP.ClientContext.get_current();
        var listId = SP.ListOperation.Selection.getSelectedList();
        var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context);
        var list = context.get_web().get_lists().getById(listId);
        var listItems = [];
        for (idx in selectedItemIds) {
            var item = list.getItemById(parseInt(selectedItemIds[idx].id));
            listItems.push(item);
            context.load(item);
        }
        context.executeQueryAsync(
           function () {
               OnSuccess(listItems);
           },
           OnError
        );
    }
    function getSelectedItemsId() {
       var context = SP.ClientContext.get_current();
        var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
        var ListGUID = SP.ListOperation.Selection.getSelectedList();
        var clientContext = new SP.ClientContext.get_current();
        var targetList = clientContext.get_web().get_lists().getById(ListGUID);
         getSelectedItems(function (items) {
            for (var i = 0 ; i < items.length; i++) {
              console.log(items[i].get_item('ID'));
            }
        },
            function (sender, args) {
                alert('An error occured: ' + args.get_message());
            });
    }
    
    <button type="button" onclick="getSelectedItemsId()" id="CreateList">Item Id</button>
    14 декабря 2020 г. 9:59

Все ответы

  • К выделенным в списке элементам можно обращаться через CSOM, SP.ListOperation.Selection.getSelectedItems() Method, пример здесь.

    var context = SP.ClientContext.get_current();
    var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context);

    Пример:

    function getSelectedItems(OnSuccess, OnError) {
        var context = SP.ClientContext.get_current();
        var listId = SP.ListOperation.Selection.getSelectedList();
        var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context);
        var list = context.get_web().get_lists().getById(listId);
        var listItems = [];
        for (idx in selectedItemIds) {
            var item = list.getItemById(parseInt(selectedItemIds[idx].id));
            listItems.push(item);
            context.load(item);
        }
        context.executeQueryAsync(
           function () {
               OnSuccess(listItems);
           },
           OnError
        );
    }
    function getSelectedItemsId() {
       var context = SP.ClientContext.get_current();
        var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
        var ListGUID = SP.ListOperation.Selection.getSelectedList();
        var clientContext = new SP.ClientContext.get_current();
        var targetList = clientContext.get_web().get_lists().getById(ListGUID);
         getSelectedItems(function (items) {
            for (var i = 0 ; i < items.length; i++) {
              console.log(items[i].get_item('ID'));
            }
        },
            function (sender, args) {
                alert('An error occured: ' + args.get_message());
            });
    }
    
    <button type="button" onclick="getSelectedItemsId()" id="CreateList">Item Id</button>
    14 декабря 2020 г. 9:59
  • Михаил, благодарю за ответ!

    Скажи, пожалуйста, я правильно понимаю, что без C# и солюшена тут не обойтись?

    Или можно одним JavaScript-ом реализовать?

    14 декабря 2020 г. 10:09
  • Михаил, благодарю за ответ!

    Скажи, пожалуйста, я правильно понимаю, что без C# и солюшена тут не обойтись?

    Или можно одним JavaScript-ом реализовать?

    Обычный JavaScript подключи через Content Editor (Редактор контента).
    14 декабря 2020 г. 10:13
  • Я так и сделал, но у меня при выделении слева галочкой элемента списка - вот сюда не попадает:
    function getSelectedItems(OnSuccess, OnError)
    Я думаю, что CSOM как то не подключил.
    Вот мой код:
    <script>
    
    function getSelectedItems(OnSuccess, OnError) {
     
    	console.log ('here');
    	
        var context = SP.ClientContext.get_current();
        var listId = SP.ListOperation.Selection.getSelectedList();
        var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context);
        var list = context.get_web().get_lists().getById(listId);
        var listItems = [];
    	
        for (idx in selectedItemIds) {
             var item = list.getItemById(parseInt(selectedItemIds[idx].id));
             listItems.push(item);
             context.load(item);
        }
    	
        context.executeQueryAsync(
    		function () {
               console.log(listItems);
    		},	   
    		function(err){ console.log(err); }
    		
        );
    }
    
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function(){
    	
    	//Request.EnsureSetup();	
    	
    	var context = SP.ClientContext.get_current();
    	var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context);
    	
    	console.log('lkkdjhfkj');	
    	
    });
    	
    	
    </script>
    


    • Изменено VARD32 14 декабря 2020 г. 10:19
    14 декабря 2020 г. 10:16
  • Добрый день.
    В вашем примере код выполняется сразу после загрузки страницы и подгрузки sp.js

    а вы хотите по событию выделения элемента.


    мой блог не много о SharePoint


    17 декабря 2020 г. 11:43
    Модератор
  • могу предложить пример с кнопкой риббона

    Кнопка на Ribbon (userCustomActions только с помощью JS)



    мой блог не много о SharePoint


    17 декабря 2020 г. 12:22
    Модератор