none
изменение цвета в списке задач в sharepoint online RRS feed

  • Вопрос

  • У меня список задач надо что бы менялись цвета строки по полю "Состояние задачи" - не начата, в процессе выполнение, Завершена. 

    написал ниже код в сраничке добавил веб част редактор сценариев но в списке так и не изменились цвета подскажите где ощибка

     SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {
        SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
       OnPostRender: function(ctx) {
         var statusColors =  {
         'Не начата' : '#FFF1AD', 
         'В процессе выполнения' : '#FFD800',
         'Завершена' : '#01DF3A'
         };
         var rows = ctx.ListData.Row;
         for (var i=0;i<rows.length;i++)
         {
         var status = rows[i]["Состояние задачи"];
         var rowId = GenerateIIDForListItem(ctx, rows[i]);
         var row = document.getElementById(rowId);
         row.style.backgroundColor = statusColors[status];
         }
       }
        });
     });

    10 июня 2016 г. 9:29

Ответы

  • если есть проблемы с добавлением через плагин, вставьте код непосредственно в веб-часть "Редактор скриптов"

    предварительно добавив веб-часть на страницу


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

    через редактор скриптов тоже пробовал.

    16 июня 2016 г. 3:30
  • Добрый день

    Думаю что причина в том, что вы обращаетесь к полю по отображаемому имени.

    попробуйте так:

    SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {  
    		SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
    		   OnPostRender: function(ctx) {
    			 var statusColors =  {'Не начата' : '#FFF1AD',  
    								 'В процессе выполнения' : '#FFD800',
    								 'Завершена' : '#01DF3A' 
    								 };
    			 var rows = ctx.ListData.Row;
    			 for (var i=0;i<rows.length;i++)
    			 {       
    				 var status = rows[i]["Status"];
    				 var rowId = GenerateIIDForListItem(ctx, rows[i]);
    				 var row = document.getElementById(rowId); 
    				 row.style.backgroundColor = statusColors[status];
    			 }
    		   }
    		});
    	});


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

    Проблема была в том, что обращение было по отображаемому имени. Через internalName все  заработало.

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


    20 июня 2016 г. 6:50
    Модератор

Все ответы

  • Здравствуйте.

    Рекомендую Вам задать Ваш вопрос на форуме Sharepoint Online, где можете получить самый точный ответ.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    10 июня 2016 г. 10:34
    Модератор
  • Добрый день

    Думаю что причина в том, что вы обращаетесь к полю по отображаемому имени.

    попробуйте так:

    SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {  
    		SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
    		   OnPostRender: function(ctx) {
    			 var statusColors =  {'Не начата' : '#FFF1AD',  
    								 'В процессе выполнения' : '#FFD800',
    								 'Завершена' : '#01DF3A' 
    								 };
    			 var rows = ctx.ListData.Row;
    			 for (var i=0;i<rows.length;i++)
    			 {       
    				 var status = rows[i]["Status"];
    				 var rowId = GenerateIIDForListItem(ctx, rows[i]);
    				 var row = document.getElementById(rowId); 
    				 row.style.backgroundColor = statusColors[status];
    			 }
    		   }
    		});
    	});


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

    10 июня 2016 г. 11:17
    Модератор
  • Добрый день

    Думаю что причина в том, что вы обращаетесь к полю по отображаемому имени.

    попробуйте так:

    SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {  
    		SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
    		   OnPostRender: function(ctx) {
    			 var statusColors =  {'Не начата' : '#FFF1AD',  
    								 'В процессе выполнения' : '#FFD800',
    								 'Завершена' : '#01DF3A' 
    								 };
    			 var rows = ctx.ListData.Row;
    			 for (var i=0;i<rows.length;i++)
    			 {       
    				 var status = rows[i]["Status"];
    				 var rowId = GenerateIIDForListItem(ctx, rows[i]);
    				 var row = document.getElementById(rowId); 
    				 row.style.backgroundColor = statusColors[status];
    			 }
    		   }
    		});
    	});


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

    Попробовал но не получается, а как вообще отладить та CSR
    10 июня 2016 г. 12:04
  • у меня работает

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

    10 июня 2016 г. 12:18
    Модератор
  • для CSR можно воспользоваться cisar

    сам им особо не пользуюсь. но для маленьких решений вполне 

    этот код тестировал в нем


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

    10 июня 2016 г. 12:20
    Модератор
  • у меня работает

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

    Добрый день!

    а как Вы установили скрипт в web части списка задач?

    13 июня 2016 г. 10:33
  • в конкретном случае я подключил через плагин указанный выше (cisar). Плагин предлагает шаблон кода, но я на его место вставил ваш и немного скорректировал. Плагин создает файл js в библиотеке и подключает его к веб-части представления через js linck

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


    14 июня 2016 г. 6:45
    Модератор
  • в конкретном случае я подключил через плагин указанный выше (cisar). Плагин предлагает шаблон кода, но я на его место вставил ваш и немного скорректировал. Плагин создает файл js в библиотеке и подключает его к веб-части представления через js linck

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


      подключил плагин но где должно быть js файл - No CSR-enabled webparts found on the page.   в веб части JS-ссылку указал js файла свой но в откладке файла выходить такое ошибка - Failed to load resource: the server responded with a status of 404 (Not Found)
    15 июня 2016 г. 12:05
  • если есть проблемы с добавлением через плагин, вставьте код непосредственно в веб-часть "Редактор скриптов"

    предварительно добавив веб-часть на страницу


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

    15 июня 2016 г. 12:08
    Модератор
  • если есть проблемы с добавлением через плагин, вставьте код непосредственно в веб-часть "Редактор скриптов"

    предварительно добавив веб-часть на страницу


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

    через редактор скриптов тоже пробовал.

    16 июня 2016 г. 3:30
  • Добрый день

    Думаю что причина в том, что вы обращаетесь к полю по отображаемому имени.

    попробуйте так:

    SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {  
    		SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
    		   OnPostRender: function(ctx) {
    			 var statusColors =  {'Не начата' : '#FFF1AD',  
    								 'В процессе выполнения' : '#FFD800',
    								 'Завершена' : '#01DF3A' 
    								 };
    			 var rows = ctx.ListData.Row;
    			 for (var i=0;i<rows.length;i++)
    			 {       
    				 var status = rows[i]["Status"];
    				 var rowId = GenerateIIDForListItem(ctx, rows[i]);
    				 var row = document.getElementById(rowId); 
    				 row.style.backgroundColor = statusColors[status];
    			 }
    		   }
    		});
    	});


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

    Проблема была в том, что обращение было по отображаемому имени. Через internalName все  заработало.

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


    20 июня 2016 г. 6:50
    Модератор