簡體   English   中英

ASP.NET:在CheckBoxList控件中隱藏CheckBox項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM