2010-10-05 33 views
1

我使用的數據必須在表中顯示xml文件。現在我顯示的行中的所有數據行,所以我的表如下所示:如何省略某些單元格中的數據,其中表格是從xml文件填充的

User | Date | Something 

John | 05.10| task_1  
John | 05.10| task_2  
John | 16.10| task_3 
Jane | 16.10| task_1 

,但我想要得到的東西,如:

User | Date | Something 

John | 05.10| task_1  
    |  | task_2  
    | 16.10| task_3 
Jane | 16.10| task_1 

因此,如果日期在特定的細胞等於在相應的單元格前一行(或者如果該單元格是空的,則等於從機器人到頂部的第一個非空單元格)我想省略它。

當前代碼:

<table id="DataTable" datasrc="#XMLData" cols="3"> 
    <thead> 
     <tr> 
      <td class="Example">User</td> 
      <td class="Example">Date</td> 
      <td class="Example">Something</td> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td><span datafld="USER"></td> 
      <td><span datafld="DATE"></td> 
      <td><span datafld="SOMETHING"></td> 
     </tr> 
    </tbody> 
</table> 

注:

這個問題是從現有的(舊)系統和我的選擇是有限的。特別是我不能改變XML文件,我不應該使用基於服務器的asp.net控件(但我可以,如果沒有其他方式/這是最簡單的解決方案),所以我的目標是純粹的HTML解決方案。

回答

1

如果它需要快速和骯髒的東西,使用這樣的東西....我希望你只有一個tBody;) 測試在FF工作(將需要一些crossbrowser清理,將離開那對你)。您可能要清理prevName /名稱比較適合您的需要

var tablemerge = { 
    init : function(){ 
     var tab = document.getElementById("DataTable"); 
     var prevName, prevDate; 
     for (i=0;i<tab.tBodies[0].rows.length;i++){ 
      var name = tab.tBodies[0].rows[i].cells[0].innerHTML; 
      var date = tab.tBodies[0].rows[i].cells[1].innerHTML; 
      if (i== 0) { 
       prevName = name; 
       prevDate = date; 
       continue; 
      } 
      else{ 
       if (name == prevName) 
       { 
        var cell = tab.tBodies[0].rows[i].deleteCell(0); 
        var cell = tab.tBodies[0].rows[i].insertCell(0); 
        if (date == prevDate) 
        { 
         var cell = tab.tBodies[0].rows[i].deleteCell(1); 
         var cell = tab.tBodies[0].rows[i].insertCell(1); 
        } 
        else{ 
         prevDate = date; 
        } 
       } 
       else 
       { 
        prevName = name; 
        prevDate = date; 
       } 
      } 
     } 
    } 
} 
tablemerge.init(); 
+0

呵呵,所以我必須這樣做,殘酷的方式; /反正感謝詳細的解決方案:) – zgorawski 2010-10-05 12:26:23

1

也許你可以嘗試使用xslt創建html。在這種情況下,您將能夠在xslt中查看日期。

相關問題