2009-09-29 78 views
0

我正在創建一個表的第一行來顯示標題文本,這將給它下面一組行的含義。刪除<TR>有條件地

最新活動

然後循環通的模型來構建這些即將到來的事件表上市。但是可能存在客戶端條件導致沒有行被渲染,這不需要標題行。

我如何從我的'即將發生的事件迭代器'末尾回到並刪除第一行(id =「HeadRow」)?

回答

2

如果你並不需要一個標題行,那麼你可能不需要桌子,爲什麼不只是隱藏整個桌子?

$("table").hide(); 

然後,以後,如果有東西給,那麼你就必須重建標題行,你可以更新表,並使其可見。

+0

有時很高興讓用戶知道查詢成功,但沒有返回任何內容。在這種情況下,我會離開表格(和標題行),但表示沒有結果可用。 – tvanfosson 2009-09-29 18:40:31

+0

我同意,或者至少有一個div彈出窗口,只顯示缺少結果然後消失。我只是沒有看到擺脫標題行的重點。 – 2009-09-29 19:08:07

0
$("tr#HeadRow").remove(); 
// Removes <tr id='HeadRow'><td>foo</td>...</tr> from DOM 
0

如果您確保您關閉行,以便它是有效的HTML,你可以這樣做:

$("#headrow").remove() 
0

而不是靜態定義您的標題行,我會動態地輸出它與其餘的錶行。與此類似,在僞代碼:

int numThings = 0; 
for each (thing in dataModel) { 
    if (thing.wantToDisplay()) { 
     if (++numThings == 1) { 
      outputHeaderRow(); 
     } 
     outputThing(thing); 
    } 
} 

順便說一句,你或許應該使用<日>而不是<TD>。

1

我會採取詹姆斯布萊克的方法,並隱藏整個表,如果沒有行存在,而不是隻是刪除標題行。

您可以運行一個快速檢查後,一切都已經解僱如果只有標題行存在加載行和隱藏表:

if ($("#myTable tr").length == 1) { 
    $("#myTable").hide(); 
} 
0

通常我會做什麼是假的標題行,但插入一行用一個很好的描述性信息表明沒有任何東西可以顯示。

<table> 
<thead> 
    <tr><th>....</th></tr> 
<thead> 
<tbody> 
    <% if (Model.Results.Count() > 0) { 
     foreach (var model in Model.Results) { %> 
      <tr> 
      <td><%= Html.Encode(model.Name) %></td> 
      ... 
      </tr> 
    <% } 
     } 
     else { %> 
      <tr><td colspan="N">Query returned no results.</td></tr> 
    <% } %> 
</tbody> 
<tfoot> 
    ... 
</tfoot> 
</table>