0

私は新しいユーザーですが、達成しようとしていることを示す例を見つけることができませんでした。

2つの異なるコンテキストで同じKendo.DropDownListを使用する必要がありますが、1つの属性[.Name( "DisbursedTo")]を更新する必要があります。最初は、2つの別々のddlを使用した非表示/表示アプローチを使用しました。各ddlウィジェットに一意の「.Name」が必要なことを除いて、これは機能しました。そのため、モデル属性の更新はオフになりました。1つの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ランタイムエラー:プロパティ'read'の値を取得できません:オブジェクトがnullまたは未定義です

誰かが似たようなことをしたことがあれば、私はいくつかの援助を大いに感謝します。

4

2 に答える 2

-2

Kendo DropDownListFor を使用する必要があります。

于 2013-01-29T14:15:39.410 に答える