使用jQuery更新Kendo Dropdown列表值会导致未定义元素和空字符串值

时间:2019-02-13 08:47:57

标签: jquery kendo-ui kendo-asp.net-mvc kendo-dropdown

我的MVC视图中有三个剑道下拉列表。它们的值设置为已定义的枚举。下拉列表正确显示了这些值,如果我分别选择每个值,则可以更改/更新。但是,我有一个按钮,用于将所有3个下拉列表的值更新为“全部”,调用'setToAll',该按钮调用一个jQuery函数,该函数通过name(id)设置每个下拉列表的值

这些是我的枚举:

public enum FilterEmailSignOffStatus
        {
            All = -1,
            NotSent = 0,
            Sent = 1

        }

        public enum FilterPdfSignOffStatus
        {
            All = -1,
            NotYetPrinted = 0,
            Printed = 1
        }

        public enum FilterCorrectionStatus
        {
            All = -1,
            NotCorrected = 0,
            Corrected = 1,
            Reprinted = 2
        }

这是我的观点:

 <div class="col-md-3 ">
                            @(Html.Kendo().DropDownList()
                            .Name("printStatus")
                            .DataValueField("Text")                            
.BindTo(Enum.GetNames(typeof(SignOffSheetController.FilterPdfSignOffStatus)).ToList())

                            )
                        </div>

                        <div class="col-md-3 ">

                            @(Html.Kendo().DropDownList()
                            .Name("correctionStatus")
                            .DataValueField("Text")
.BindTo(Enum.GetNames(typeof(SignOffSheetController.FilterCorrectionStatus)).ToList())
                            )
                        </div>

                        <div class="col-md-3 ">

                            @(Html.Kendo().DropDownList()
                            .Name("emailStatus")
                            .DataValueField("Text")
.BindTo(Enum.GetNames(typeof(SignOffSheetController.FilterEmailSignOffStatus)).ToList())
                            )
                        </div>

                        <div class="col-md-3 ">
                            <button id="setAllStatus" class="btn btn-default">Set to All</button>
                        </div>

这是我的jQuery函数:

$("#setAllStatus").click(function (e) {
        e.preventDefault();

        $("#printStatus").data("kendoDropDownList").value("All");
        $("#correctionStatus").kendoDropDownList().data("kendoDropDownList").value("All");
        $("#emailStatus").kendoDropDownList().data("kendoDropDownList").value("All");


    });

所有下拉列表都应更新为“全部”值,但应改为更新为""个空字符串。任何人都可以向我建议我可能会出问题的地方吗?

1 个答案:

答案 0 :(得分:1)

设法修复并使按钮正常工作。我删除了每个dropdownLists的.DataValueField(“ Text”)属性,它们现在都已正确更新。

奇怪的是,这曾经在剑道的早期版本中起作用。我们更新到较新版本(2018.2.516)后,出现了此问题。我的想法是将DropDownLists更新为“ All”,但随后尝试获取.DataValueField并失败,从而变为未定义的“”

@(Html.Kendo().DropDownList()
  .Name("printStatus")
//.DataValueField("Text")   --- **Removed this parameter**

  .BindTo(Enum.GetNames(typeof(SignOffSheetController.FilterPdfSignOffStatus)).ToList())

                            )