2013-03-26 26 views

回答

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片段。你可以从中得到一些想法。

0

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

1

是的,这是可能的,但需要一些JavaScript编码。 我使用下面的代码为最近的客户解决了这个问题。基本思想是将列的宽度从第一行的TD中移出,然后将其应用于TH,然后将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); 
+0

它的工作!我只是将类名替换为'xspDataTableViewPanel'作为我的视图,在这里和那里几乎没有什么调整。谢谢 :) – Naveen 2013-04-02 14:16:29

相关问题