我是新用户,但未能找到展示我想要完成的内容的示例。
我需要在两个不同的上下文中使用相同的Kendo.DropDownList,但必须更新一个属性[.Name(“DisbursedTo”)]。起初我使用了一个隐藏/显示方法和两个单独的ddl。它起作用了,除了每个ddl小部件都需要一个唯一的'.Name',因此我对模型属性的更新已关闭。使用一个ddl,我正在尝试动态更改ddl属性。
默认情况下,我使用'Locations'数据加载ddl(这很好)。初始加载后,我使用一个简单的单选按钮组'onclick'切换到'ADUsers',或者回到'Locations'。
<label for="DisbursedTo">Disbursed To:</label>
@(Html.Kendo().DropDownList()
.Name("DisbursedTo")
.DataTextField("Name")
.DataValueField("LocationId")
.SelectedIndex(20)
.DataSource(dataSource => dataSource
.Read(read => read.Action("GetLocations", "Disbursement")) // Specify the action method and controller name
.ServerFiltering(true) // If true the DataSource will not filter the data on the client.
)
)
function OwnerTypeClick(ownerTypeValue) {
if (ownerTypeValue == "P") {
alert("calling DisbursedToADUsers");
DisbursedToADUsers();
}
else {
alert("calling DisbursedToLocations");
DisbursedToLocations();
}
}
function DisbursedToADUsers() {
var adUsersIntranetDataSource = new kendo.data.DataSource({
read: {
action: { "GetADUsersIntranet": "Disbursements" }
}
});
var ddl = $("#DisbursedTo").kendoDropDownList({
dataTextField: "displayName",
dataValueField: "EmployeeNumber",
dataSource: adUsersIntranetDataSource,
autoBind: true
});
ddl.dataSource.read();
}
function DisbursedToLocations() {
var locationsDataSource = new kendo.data.DataSource({
read: {
action: { "GetLocations": "Disbursements" }
}
});
var ddl = $("#DisbursedTo").kendoDropDownList({
dataTextField: "Name",
dataValueField: "LocationId",
dataSource: locationsDataSource,
autoBind: true
});
ddl.dataSource.read();
}
我在'ddl.dataSource.read();上遇到以下错误所以我没有正确地更改/初始化我的数据源。
0x800a138f - Microsoft JScript运行时错误:无法获取属性“read”的值:object为null或undefined
如果有人做过类似的事情,我会非常感谢你的帮助。
答案 0 :(得分:0)
提供的代码表明您每次都在从同一个HTML元素初始化新的DropDownList小部件,并且每次都会创建新的DataSource。
您可以在函数外部创建两个不同的DataSource,然后在函数体中使用DropDownList setDataSource() method在两个dataSource之间切换,并使用setOptions() method更改其他选项,如dataTextField和dataValueField,例如:
答案 1 :(得分:-2)
您需要使用Kendo DropDownListFor。