【发布时间】:2011-09-20 16:45:24
【问题描述】:
我有一个数据绑定的 CheckBoxList 控件,它可以变得非常大,所以我正在尝试为它创建一个过滤器。这就是我正在做的事情:
foreach( ListItem item in this.UserRolesList.Items ) {
if( !item.Value.StartsWith( this.RolesFilterList.SelectedValue ) ) {
item.Attributes.CssStyle["display"] = "none";
} else item.Attributes.CssStyle["display"] = "inline";
}
这主要是有效的,除了当 ASP.NET 呈现 CheckBoxList 时,它使用一个表来实现,每个 CheckBox 控件嵌套在它自己的 <TR> 元素中。这意味着即使我不想看到的项目没有显示,它们的行的空白是,所以我仍然需要满足相当多的白人节奏。
我不知道我可以访问 <TR> 元素而不对控件进行子类化,这是我没有时间做的“不错的”功能,所以我想知道是否有我可以用来访问元素父级的 CSS 技巧(例如,<input type="checkbox"/> -> <td> -> <tr>)。我之前用过:first-child这个伪元素,但是我的网络搜索这种伎俩没有结果,所以我有疑问。不过问也无妨,对吧?
【问题讨论】:
-
在绑定到复选框列表之前,您是否有无法过滤数据源的原因?
-
您可以使用
RepeatLayout:msdn.microsoft.com/en-us/library/… 停止将其呈现为表格 -
@patmortech 我认为重复调用数据库会更有效,因为用户需要过滤、更改值、过滤、更改值等,然后单击表单的保存按钮。
-
在下面重申一下 patmortech 的 cmets,ListItem 对象上没有 Visible 属性。
标签: c# asp.net css checklistbox