[英]ASP.NET: Hide CheckBox items in CheckBoxList control
我有一個數據綁定的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
偽元素,但是我在網絡上搜索這種技巧的嘗試是徒勞的,所以我對此表示懷疑。 可以問問,對嗎?
這可能對您有用。 它將項目從列表中完全刪除,因此根本不會顯示該項目:
string value = this.RolesFilterList.SelectedValue;
int count = this.UserRolesList.Items.Count - 1;
for(var i=count;i>=0;i--)
{
ListItem item = this.UserRolesList.Items[i];
if (!item.Value.StartsWith(value))
{
this.UserRolesList.Items.RemoveAt(i);
}
}
更新
根據您上面關於您希望用戶如何操作它的評論,您最好在javascript中完成所有客戶端操作,而不是在回發中這樣做。
在jQuery中,您可以創建一個在更改選擇列表時運行的函數,然后該函數將在UserRolesList表中找到所有復選框,然后對其進行循環,並根據其值使用.closest('tr')
函數來隱藏/顯示包含它們的整個表格行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.