使用 jQuery 更新 Kendo 下拉列表值会导致未定义的元素和空字符串值
updating Kendo Dropdown list values with jQuery results in undefined elements and empty string values
我的 MVC 视图中有三个 kendo 下拉列表。它们的值被设置为定义的枚举。下拉列表正确显示值,如果我单独 select 每个值,我可以 change/update。但是,我有一个按钮用于将所有 3 个下拉列表的值更新为 "All" 调用 'setToAll' 调用 jQuery 函数,该函数通过名称(id)[= 设置每个下拉列表的值16=]
这些是我的枚举:
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");
});
下拉列表应全部更新为 "All" 值,但它们被更新为 ""
空字符串。任何人都可以帮我看看我可能哪里出错了?
设法修复并使按钮正常工作。我删除了每个下拉列表上的 .DataValueField("Text") 属性,它们现在都在正确更新。
奇怪的是,这曾经在 Kendo 的早期版本中起作用。在我们更新到较新的版本(2018.2.516)后,出现了这个问题。我的想法是 DropDownLists 更新为 "All" 但随后尝试获取 .DataValueField 并失败,因此变为 undefined ""
@(Html.Kendo().DropDownList()
.Name("printStatus")
//.DataValueField("Text") --- **Removed this parameter**
.BindTo(Enum.GetNames(typeof(SignOffSheetController.FilterPdfSignOffStatus)).ToList())
)
我的 MVC 视图中有三个 kendo 下拉列表。它们的值被设置为定义的枚举。下拉列表正确显示值,如果我单独 select 每个值,我可以 change/update。但是,我有一个按钮用于将所有 3 个下拉列表的值更新为 "All" 调用 'setToAll' 调用 jQuery 函数,该函数通过名称(id)[= 设置每个下拉列表的值16=]
这些是我的枚举:
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");
});
下拉列表应全部更新为 "All" 值,但它们被更新为 ""
空字符串。任何人都可以帮我看看我可能哪里出错了?
设法修复并使按钮正常工作。我删除了每个下拉列表上的 .DataValueField("Text") 属性,它们现在都在正确更新。
奇怪的是,这曾经在 Kendo 的早期版本中起作用。在我们更新到较新的版本(2018.2.516)后,出现了这个问题。我的想法是 DropDownLists 更新为 "All" 但随后尝试获取 .DataValueField 并失败,因此变为 undefined ""
@(Html.Kendo().DropDownList()
.Name("printStatus")
//.DataValueField("Text") --- **Removed this parameter**
.BindTo(Enum.GetNames(typeof(SignOffSheetController.FilterPdfSignOffStatus)).ToList())
)