0

我是一个新用户,无法找到一个示例来展示我正在尝试完成的工作。

我需要在两种不同的上下文中使用相同的 Kendo.DropDownList,但必须更新一个属性 [.Name("DisbursedTo")]。起初,我使用了带有两个单独 ddl 的隐藏/显示方法。它起作用了,除了每个 ddl 小部件都需要一个唯一的“.Name”,所以我对模型属性的更新是关闭的。使用一个 ddl,我正在尝试动态更改 ddl 属性。

默认情况下,我使用“位置”数据加载 ddl(这工作正常)。初始加载后,我使用一个简单的单选按钮组“onclick”切换到“ADUsers”,或返回“Locations”。

cshtml

    <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 运行时错误:无法获取属性“读取”的值:对象为空或未定义

如果有人做过类似的事情,我将非常感谢一些帮助。

4

2 回答 2

1

提供的代码建议您每次都从同一个 HTML 元素初始化新的 DropDownList 小部件,并且每次都会创建新的 DataSource。

你可以在函数外创建两个不同的DataSource,然后在函数体内使用DropDownList setDataSource()方法在两个dataSource之间切换,setOptions()方法改变dataTextField和dataValueField等其他选项,例如:

例子

于 2017-01-21T09:54:29.143 回答
-2

您需要使用 Kendo DropDownListFor。

于 2013-01-29T14:15:39.410 回答