我有一个剑道窗口(模态),我正在填充各种元素,以便在我的应用程序中收集“小部件”的不同属性。我有下拉列表、数字文本框、多选等。我已经为所有这些设置了更改事件,例如下面的下拉列表:
@(Html.Kendo().DropDownList()
.Name("property-edit-" + @WidgetProperty.widget_property)
.HtmlAttributes(new { @class = "widget-property-value-edit andon-type-" + WidgetProperty.widget_property_type.ToLower(), style = "width:300px; height: 30px" })
.DataTextField("tag_name")
.DataValueField("tag_name")
.Value(WidgetProperty.widget_property_value)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("AndonTagList", "List", new { DataType = Model.widget_data_type });
})
.ServerFiltering(true);
})
.Enable(true)
.Events(e => { e.Change("propertyChanged('property-edit-" + @WidgetProperty.widget_property + "')"); })
)
所有 Kendo 控件的更改事件仅在第一次渲染视图并且它们的值通过 .Value() 配置属性填充时触发。无论我选择新值、编辑文本框还是使用微调器,它们都不会再次触发。
下拉呈现的脚本对我来说看起来不错?
kendo.syncReady(function(){jQuery("#property-edit-Tag-Name").kendoDropDownList({"change":propertyChanged('property-edit-Tag-Name'),"dataSource":{"transport":{"read":{"url":"/List/AndonTagList?DataType=Text","data":function() { return kendo.ui.DropDownList.requestData(jQuery("#property-edit-Tag-Name")); }},"prefix":""},"serverFiltering":true,"filter":[],"schema":{"errors":"Errors"}},"dataTextField":"tag_name","dataValueField":"tag_name"});});
我在同一个视图上有非剑道输入,onchange 事件按预期工作。
控制台中没有错误。
这是被调用的函数,没什么特别的:
function propertyChanged(PropertyElement)
{
console.log("Element: " + PropertyElement);
}
有任何想法吗?