XPages - 是否可以修复视图列标题?

时间:2013-03-26 16:32:42

标签: xpages

只是检查是否有一种非常简单的方法可以修复视图标题,这样当你在XPages的视图中向下翻页时,标题就会保持原样。 position=Fixed不是xp:viewColumnHeader的属性。

3 个答案:

答案 0 :(得分:1)

如果要将position的属性添加到xp:viewColumnHeader,可以使用attrs属性来执行此操作(适用于8.5.3)。您的代码看起来像这样:

<xp:viewColumnHeader ......>
    <xp:this.attrs>
        <xp:attr name="position" value="fixed"></xp:attr>
    </xp:this.attrs>
</xp:viewColumnHeader>

但我不认为仅凭这一点就可以解决问题。一段时间后,我创建了一个到make floating Banner, Title Bar and Place Bar in Application Layout control of Extension Library的CSS片段。你可以从中得到一些想法。

答案 1 :(得分:1)

是的,这是可能的,但需要一些JavaScript编码。 我最近使用以下代码解决了这个问题。基本思路是将列的宽度从TD的第一行中移出,然后将其应用于THs广告,然后将TH设置为固定。 您也需要在部分更新后运行此功能。祝好运。

var fixTableHeaders = function() { 
    var thead = dojo.query("thead")[0]; 
    if (!thead) return;
    thead.style.position = "static";
    var THs = dojo.query('.xspDataTable th'); 
    var firstTDs = dojo.query('.xspDataTable tr:first-child td');
    var secondTDs = null;
    if (firstTDs.length < 2) {
        // categorized view, first line is a category with only one cell
        // -> we need the second line
        secondTDs = dojo.query('.xspDataTable tr:nth-child(2) td');         
    }
    var w = 0; 
    for (var i = 0; i < THs.length; i++) {
            w = dojo.coords(THs[i], true).w;                
            // console.log(i+" w="+w);
            THs[i].style.width = (w)+"px";
            if (firstTDs[i]) { 
                //if (secondTDs && secondTDs[i]) secondTDs[i].style.width = w+"px";
                //else firstTDs[i].style.width = w+"px";
                firstTDs[i].style.paddingTop = "3em";
            } 
    } 
   thead.style.position = "fixed";                        
}     
dojo.addOnLoad(fixTableHeaders); 

答案 2 :(得分:0)

前几天我看到了一些可以修复表头的jQuery代码。不记得它在哪里,但可以帮助你的东西应该在那里。