好的,我已經關注了這個線程一段時間,並嘗試了很多方法來實現它,最終我入侵了幾乎所有的SP2010和SP2007 JavaScript,並發現了以下工作在SP2010上,我擁有它在SP2007中使用不同的前綴。
第1步:找出你的日曆部件的Javascript ID前綴是什麼。
- 爲此,請在IE8或IE9中啓動儀表板,然後按F12啓動Javascript調試器。
- 使用Javascript GetElementByTagName(「TD」)獲取頁面上所有TD標籤的完整列表。
- 查找ID中具有GUID且以_Selection和Selection_Toggle結尾的標籤。
- 這些將是您的日曆過濾器零件。注意起始前綴(在SP2007它在SP2010是ct_100_是pps_)
第2步:添加以下JavaScript到用於儀表板的母版頁的末尾(看帖子的結尾)
第3步:保存母版頁並刷新瀏覽器,日期應該更改爲昨天。
我也創建了這個儀表板上有兩個日曆過濾器,以允許日期範圍過濾,這將設置第一個日期提前11天和第二個日期到昨天。 [email protected]
<script type="text/JavaScript">
var isFirstLoad;
var calendarLoaded = false;
var srcID = "ctl00_m_WebPart_293af46d1c5c4320893d47f86614325bSelection";
var strDate = "Tue Aug 2 00:00:00 UTC+0200 2011";
var t;
var dateBackA = 1;
var dateBackB = 10;
testForCalendar();
function testForCalendar()
{
isFirstLoad = true;
if(calendarLoaded != true)
t = setTimeout("waitForIt()", 5);
}
function waitForIt()
{
var foundControl = -1;
var t = document.getElementsByTagName("TD");
var ts = "";
var subDateFound = false;
var xPoint = 0;
for(var x = 0; x < t.length; x++)
{
if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
{
foundControl = x;
ts = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
xPoint = x;
x = t.length;
}
}
if(foundControl > -1)
{
if(isFirstLoad == true)
{
if(t[xPoint].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
calendarIntercept(ts, calendarDate(new Date(), dateBackB));
else
calendarIntercept(ts, calendarDate(new Date(), dateBackA));
waitForItSub(xPoint, ts);
calendarLoaded = true;
isFirstLoad = false;
}
else
t = setTimeout("waitForIt()", 5);
}
else
t = setTimeout("waitForIt()", 5);
}
function waitForItSub(startPoint, firstTag)
{
var foundControl = -1;
var t = document.getElementsByTagName("TD");
var tsub = "";
var xPointNew = 0;
for(var x = (startPoint++); x < t.length; x++)
{
if(t[x].id.indexOf(firstTag) == -1)
{
if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
{
foundControl = x;
tsub = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
xPointNew = x;
x = t.length;
}
}
}
if(foundControl > -1)
{
if(isFirstLoad == true)
{
if(t[xPointNew].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
calendarIntercept(tsub, calendarDate(new Date(), dateBackB));
else
calendarIntercept(tsub, calendarDate(new Date(), dateBackA));
calendarLoaded = true;
isFirstLoad = false;
}
}
}
function calendarIntercept(inSrcID, inDate)
{
strDate = (inDate.getMonth()+1) + "/" + inDate.getDate() + "/" + inDate.getFullYear();
pps_TI_calendar_render (inSrcID, strDate , strDate);
}
function calendarDate(inDate, daysBack)
{
var returnValue = new Date();
returnValue.setDate(returnValue.getDate() - daysBack);
return returnValue;
}
</script>
彌敦道任何問題,這不是我問的,我wan't更改日曆的默認日期之一,而不是報告接收的價值,我有兩個日曆所以用戶可以設置一個範圍,報告儀表板務必顯示用戶選擇的日期,而不是 - 第一個日期的30天。 –
你甚至讀過這個問題的標題嗎? –
放鬆gabriel。你已經說過這不是正確的答案,你低估了我。休息一下。 –