【发布时间】:2009-10-05 13:23:41
【问题描述】:
我有一个 gridview 和一些复选框控件,我的想法是只显示带有相应复选框的行。
我已经编写了这些 JQuery/javascript 的烂摊子,它实际上确实可以工作,但我的眼睛被冒犯了,而且执行得非常糟糕。是否有更简单和/或更快的方法来使用复选框名称按列文本进行过滤?
<script type="text/javascript">
$(document).ready(function() {
$('.Red input:checkbox').click(function(event) {
if (this.checked) {
jQuery(".EntriesGrid tr:hidden .Colour:contains('Red')").parent().show();
}
if (!this.checked) {
jQuery(".EntriesGrid tr:visible .Colour:contains('Red')").parent().hide();
}
});
$('.Green input:checkbox').click(function(event) {
if (this.checked) {
jQuery(".EntriesGrid tr:hidden .Colour:contains('Green')").parent().show();
}
if (!this.checked) {
jQuery(".EntriesGrid tr:visible .Colour:contains('Green')").parent().hide();
}
});
$('.Blue input:checkbox').click(function(event) {
if (this.checked) {
jQuery(".EntriesGrid tr:hidden .Colour:contains('Blue')").parent().show();
}
if (!this.checked) {
jQuery(".EntriesGrid tr:visible .Colour:contains('Blue')").parent().hide();
}
});
});
</script>
<span id="filtercheckboxes">
<asp:CheckBox ID="Red" runat="server" CssClass="Red" Width="5px" Checked="True" />
<asp:Label runat="server" Text="Red" AssociatedControlID="Red" ID="RedLabel"
CssClass="RedLabel" />
<asp:CheckBox ID="Green" runat="server" CssClass="Green" Width="5px" Checked="True" />
<asp:Label runat="server" Text="Green" AssociatedControlID="Green" ID="GreenLabel"
CssClass="GreenLabel" />
<asp:CheckBox ID="Blue" runat="server" CssClass="Blue" Width="5px" Checked="True" />
<asp:Label runat="server" Text="Blue" AssociatedControlID="Blue" ID="BlueLabel"
CssClass="BlueLabel" />
</span>
ASP.NET gridview 的 HTML 输出如下所示:
<div class="AspNet-GridView" id="ctl00_ContentPlaceHolder1_GridView1">
<table summary="" class="EntriesGrid">
<thead>
<tr class="headerrow">
<th scope="col">header</th>
<th scope="col">header</th>
<th class="Colour" scope="col">header</th>
<th scope="col">header</th>
</tr>
</thead>
<tbody>
<tr>
<td>data</td>
<td>data</td>
<td class="Colour">Red</td>
<td>data</td>
</tr>
</tbody>
</table>
</div>
(这在原来的基础上被大大简化了,希望让它更容易理解。过滤在原来的情况下也确实有效,它只是缓慢而丑陋......)
【问题讨论】:
-
是否所有包含颜色名称的表格单元格都具有 .Colour 类?如果您可以发布一些由 Gridview 控件输出的 HTML 标记,我可能会提供帮助。
-
谢谢马克。并非所有单元格都有.Colour 类,只有一列。我已在问题末尾发布了标记。