好的,我已经关注这个线程一段时间并尝试了很多方法来让它工作,最终我破解了几乎所有的 SP2010 和 SP2007 JavaScript 并发现以下内容可以在 SP2010 上工作,我让它在 SP2007 中工作一个不同的前缀。
第 1 步:找出日历部分的 Javascript id 前缀是什么。
- 为此,请在 IE8 或 IE9 中启动仪表板,然后按 F12 启动 Javascript 调试器。
- 使用 Javascript GetElementByTagName("TD") 获取页面上所有 TD 标签的完整列表。
- 查找在 id 中具有 GUID 并以 _Selection 和 Selection_Toggle 结尾的标签。
- 这些将是您的日历过滤器部件。注意起始前缀(在 SP2007 中是 ct_100_ 在 SP2010 中是 pps_)
第 2 步:将以下 Javascript 添加到用于仪表板的母版页末尾(查看帖子末尾)
第 3 步:保存母版页并刷新浏览器,日期应更改为昨天。
我还为带有两个日历过滤器的仪表板创建了这个,以允许进行日期范围过滤,这会将第一个日期设置为早 11 天,第二个日期设置为昨天。任何问题 emil.swanepoel@live.co.za
<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>