在剑道 DDL 中隐藏项目



我目前正在使用KendoUI DropDownListfor,我正在尝试从我的选项列表中隐藏一个项目。

我可以使用以下脚本使用 @Html.DropDownListFor 和 javascript 来做到这一点:

$("#relationDDL").children('option[value="2"]').hide();

但是当我想将我的下拉列表更改为 KendoUI 时,我无法实现。我使用了论坛和如何修改KendoUI DropDownList项目中发布的多个解决方案,但没有机会。我该如何解决这个问题?

我知道

这是一个非常古老的问题,但它在今天可能仍然相关,所以这是我的解决方案:

由于下拉项存储在单独的容器中,因此您可以从那里隐藏项目。

在您的情况下,容器元素 id 为:#relationDDL_listbox

从那里很容易。

隐藏每个索引的特定选项的解决方案:

$('#relationDDL_listbox .k-item').eq(1).hide();

隐藏每个值的特定选项的解决方案:

首先,您需要要隐藏的值的索引,因此我编写了一个简单的函数来获取它:

//for modern browsers only
function getIndex(kendoDropDownList, value) {
    const index = kendoDropDownList.dataSource.options.data.findIndex(x => x.value == value);
    if (~index) return index;
    throw 'value not found in options';
}
//older browsers
function getIndex(kendoDropDownList, value) {
    var d = kendoDropDownList.dataSource.options.data;  
    for(var i = d.length; i--;) {
        if (d[i].value == value) return i;
    }
    throw 'value not found in options';
}

var index = getIndex($('#relationDDL').data('kendoDropDownList'), '2'); //you may want to use 'const' instead of 'var' for modern browsers
$('#relationDDL_listbox .k-item').eq(index).hide();

我很确定还有几种方法可以获得相同的结果......

最新更新