sharepoint 2010: пользовательский столбец с javascript - PullRequest
1 голос
/ 13 февраля 2012

Я хотел знать, возможно ли создать пользовательский столбец, который будет получать мне сегодняшнюю дату каждый раз без необходимости обновления элемента в списке?

моя конечная цель - подсчитать, сколько времени осталось или превышено между датой назначения и сегодняшней датой.

Я подумал о том, чтобы разместить код, подобный этому, скрытому на странице, а затем каким-то образом сослаться на innerHTML элемента div даты при создании вычисляемого столбца.

сегодня = новая дата ();

   D = today.getDate();
   M = today.getMonth() + 1;
   Y = today.getYear();
   document.getElementById('date').innerHTML=D+"/"+M+"/"+Y;

   <div id="date" style="display:none"></div>

У кого-нибудь есть мысли о том, как это можно сделать?

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Вы сказали, что хотите показать столбец обратного / обратного отсчета для отображения количества дней между датой и текущей датой, например,

Задача X |Из-за 20 февраля |В течение 5 дней

Вы не можете сделать это непосредственно в пользовательском столбце, поскольку вы не можете гарантировать, что код на стороне сервера будет выполняться при просмотре страницы (например, в вашем настраиваемом поле).Тип CODE не будет работать в обычном представлении списка), но вы можете использовать JavaScript (с пользовательским столбцом или без него).

В этом сообщении о 4 способах получения поля обратного отсчета, работающего , включаядва Кристоф из pathtosharepoint.com известность, которая звучит так, как будто она соответствует вашим требованиям: -

Вы можете взять эту идею, комбинируя ее с настраиваемым столбцом для вывода ссылок javascript, как показано в @Ivan, или вы можете простодобавить JavaScript на страницу через CEWP.

2 голосов
/ 14 февраля 2012
Include a content editor web part in the page (newform.aspx / editform.aspx) and use jQuery (or just plain JavaScript) to handle the setting of default values.

Edit: some example code:


In the lists newform.aspx, include a reference to jquery. If you look at the html code, you can see that each input tag gets an id based on the field's GUID, and a title that's set to the fields display name.


now, using jquery we can get at these fields using the jQuery selector like this:

By title:


$("input[title='DISPLAYNAMEOFFIELD']");

by id (if you know the field's internal guid, the dashes will ahve to be replaced by underscores:

// example field id, notice the guid and the underscores in the guid ctl00_m_g_054db6a0_0028_412d_bdc1_f2522ac3922e_ctl00_ctl04_ctl15_ctl00_ctl00_ctl04_ctl00_ctl00_TextField

$("input[id*='GUID']"); //this will get all input elements of which the id contains the specified GUID, i.e. 1 element


We wrap this in the ready() function of jQuery, so all calls will only be made when the document has fully loaded:


$(document).ready(function(){
 // enter code here, will be executed immediately after page has been loaded
});


By combining these 2 we could now set your dropdown's onchange event to the following


$(document).ready(function(){
 $("input[title='DISPLAYNAMEOFFIELD']").change(function() 
 {
      //do something to other field here 
 });
});
2 голосов
/ 13 февраля 2012

Вы можете создать свой собственный тип поля и установить javascript для рендеринга, например так:

...]]>

Затем поместите MyDateTime.js с определением функции GetCurrentTime в папку раскладок, и все готово.Для получения дополнительной информации об объявлении пользовательских типов полей см .: http://www.spsamples.com/2011/06/sharepoint-indicator-field-type.html

...