我正在創建一個表的第一行來顯示標題文本,這將給它下面一組行的含義。刪除<TR>有條件地
最新活動
然後循環通的模型來構建這些即將到來的事件表上市。但是可能存在客戶端條件導致沒有行被渲染,這不需要標題行。
我如何從我的'即將發生的事件迭代器'末尾回到並刪除第一行(id =「HeadRow」)?
我正在創建一個表的第一行來顯示標題文本,這將給它下面一組行的含義。刪除<TR>有條件地
最新活動
然後循環通的模型來構建這些即將到來的事件表上市。但是可能存在客戶端條件導致沒有行被渲染,這不需要標題行。
我如何從我的'即將發生的事件迭代器'末尾回到並刪除第一行(id =「HeadRow」)?
如果你並不需要一個標題行,那麼你可能不需要桌子,爲什麼不只是隱藏整個桌子?
$("table").hide();
然後,以後,如果有東西給,那麼你就必須重建標題行,你可以更新表,並使其可見。
$("tr#HeadRow").remove();
// Removes <tr id='HeadRow'><td>foo</td>...</tr> from DOM
如果您確保您關閉行,以便它是有效的HTML,你可以這樣做:
$("#headrow").remove()
而不是靜態定義您的標題行,我會動態地輸出它與其餘的錶行。與此類似,在僞代碼:
int numThings = 0;
for each (thing in dataModel) {
if (thing.wantToDisplay()) {
if (++numThings == 1) {
outputHeaderRow();
}
outputThing(thing);
}
}
順便說一句,你或許應該使用<日>而不是<TD>。
我會採取詹姆斯布萊克的方法,並隱藏整個表,如果沒有行存在,而不是隻是刪除標題行。
您可以運行一個快速檢查後,一切都已經解僱如果只有標題行存在加載行和隱藏表:
if ($("#myTable tr").length == 1) {
$("#myTable").hide();
}
通常我會做什麼是假的標題行,但插入一行用一個很好的描述性信息表明沒有任何東西可以顯示。
<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>
有時很高興讓用戶知道查詢成功,但沒有返回任何內容。在這種情況下,我會離開表格(和標題行),但表示沒有結果可用。 – tvanfosson 2009-09-29 18:40:31
我同意,或者至少有一個div彈出窗口,只顯示缺少結果然後消失。我只是沒有看到擺脫標題行的重點。 – 2009-09-29 19:08:07