زمانی که از Dataview در یک صفحه استفاده می کنیم و این data view را بر اساس فیلد خاصی گروه بندی می کنیم.و گروه ها را به حالت بسته یا collapse نمایش می دهیم. یا زمانی که یک لیست را که بر اساس فیلد خاصی گروه بندی کرده ایم به XSL تبدیل می کنیم (Convert to XSL) در مرورگرهایی مانند فایر فاکس با کلیک بر" + " کنار هر گروه نمی توان آن گروه را باز یا Expand کرد.
برای حل این مشکل در صفحه ای که Dataview استفاده کرده ایم، جاوا اسکریپت زیر را اضافه میکنیم :(لینک جاوااسکریپت)
<script type="text/javascript">
function ExpGroupBy(formObj)
{
if ((browseris.w3c) && (!browseris.ie)) {
document.all=document.getElementsByTagName("*");
}
docElts=document.all;
numElts=docElts.length;
images=formObj.getElementsByTagName("IMG");
img=images[0];
srcPath=img.src;
index=srcPath.lastIndexOf("/");
imgName=srcPath.slice(index+1);
if (imgName=='plus.gif')
{
fOpen=true;
displayStr="";
img.src='/_layouts/images/minus.gif';
}
else
{
fOpen=false;
displayStr="none";
img.src='/_layouts/images/plus.gif';
}
oldName=img.name;
img.name=img.alt;
img.alt=oldName;
spanNode=img;
while(spanNode !=null)
{
spanNode=spanNode.parentNode;
if (spanNode !=null &&
spanNode.id !=null &&
spanNode.id.length > 5 &&
spanNode.id.substr(0, 5)=="group")
break;
}
parentNode=spanNode;
while(parentNode !=null)
{
parentNode=parentNode.parentNode;
if (parentNode !=null &&
parentNode.tagName=="TABLE")
break;
}
lastNode=null;
if (parentNode !=null)
{
lastNode=parentNode.lastChild;
if (lastNode !=null && lastNode.tagName=="TBODY")
lastNode=lastNode.lastChild;
if (lastNode !=null && lastNode.tagName=="TR" && lastNode.lastChild !=null)
lastNode=lastNode.lastChild;
}
for(var i=0;i<numElts;i++)
{
var childObj=docElts
;
if (childObj==spanNode)
break;
}
ID=spanNode.id.slice(5);
for(var j=i+1; j<numElts; j++)
{
var childObj=docElts[j];
if (childObj.id.length > 5 &&
childObj.id.substr(0, 5)=="group")
{
curID=childObj.id.slice(5);
if (curID <=ID)
return;
}
parentNode=childObj;
while(parentNode !=null)
{
parentNode=parentNode.parentElement;
if (parentNode==spanNode)
break;
}
if (parentNode==spanNode)
continue;
if (childObj !=img &&
childObj.tagName=="IMG" &&
childObj.src &&
childObj.src.slice(childObj.src.length - 25)=='/_layouts/images/plus.gif')
{
childObj.src='/_layouts/images/minus.gif';
oldName=childObj.name;
childObj.name=childObj.alt;
childObj.alt=oldName;
}
if (childObj.tagName==spanNode.tagName &&
childObj.id !="footer")
{
childObj.style.display=displayStr;
}
if ((childObj.tagName=="TABLE" && lastNode==null) || childObj==lastNode)
break;
}
}
//-->
</script>