KendoUI级联下拉列表 - 从下拉列表中检索json数据以在控制器中使用

时间:2013-09-18 15:01:03

标签: c# asp.net json drop-down-menu kendo-ui

哦,小伙子,这次我得到了什么。必须让一些KendoUI级联dropdrown列表正常工作,但我想我现在将从两个开始。基本上我需要检索用户为视图中的第一个列表选择的任何内容,然后将其发送回控制器,然后将其传递给Entity Framework方法(我已经设置了)。这就是我现在拥有的。然后,控制器根据所选的第一个下拉分区值传回适当的第二个下拉列表。我已尝试在参数映射中使用Kendo stringify(数据)技巧以及使用cascadeFrom:“division”,如kendoui文档中所建议的那样但到目前为止还没有工作。因此,引导我到目前为止这个有趣的创作。

非常感谢任何帮助或加菲猫漫画。

下拉列表的JS;

var divisions = $("#division").kendoDropDownList({
    optionLabel: "Select category...",
    dataTextField: "CodeAndDescription",
    dataValueField: "Code",
    dataSource: {
        // type: "odata",
        serverFiltering: true,
        transport: {
            read: {
                url: VIPApiUrl + "GetDivision",
                dataType: "json",
                async: false,
                type: "POST",
            }, parameterMap: function (options, type) {

                // edit VARS passed to service here!
                if (type === 'read') {
                    return {
                        'division': options.division,
                        // 'criteria[0].Value': options.value
                        // ...
                    };
                }
            }
        }
    },
    change: function () {
        var value = this.value();
        alert(value);
        if (value) {
            itemGroupDataSource.one("change", function () {
                itemGroup.current(null);
            }).filter({
                field: "ID",
                operator: "eq",
                value: parseInt(value)
            });
            itemGroup.enable();
        } else {
            itemGroup.enable(false);
        }

        itemGroup.select(0);
    }
}).data("kendoDropDownList");

var itemGroupDataSource = new kendo.data.DataSource({
    //type: "odata",
    serverFiltering: true,
    transport: {
        read: {
            url: VIPApiUrl + "GetItemGroup",
            dataType: "json",
            async: false,
            type: "POST",

        }
    }
});I 

我需要访问json的控制器:

#region GetItemGroup
    [HttpPost]
    public List<ItemGroupsDTO> GetItemGroup(JObject jsonData)
    {
        dynamic json = jsonData;
        string x = null; //intentionally pass null values
        string division = json.division;


        List<ItemGroupsDTO> ItemGroups = new List<ItemGroupsDTO>();

        var ItemGroupEOList = new VIPItemGroupBOList();


        ItemGroupEOList.Load(x, x, division, x, x, x, x, x, x, x, false);

        foreach (var d in ItemGroupEOList)
        {
            var ItemGroup = new ItemGroupsDTO();
            ItemGroup.Code = d.Code;
            ItemGroups.Add(ItemGroup);
        }

        return ItemGroups;
    }
    #endregion

1 个答案:

答案 0 :(得分:0)

好的,我通过将itemGroupDataSource中的参数map更改为:

来解决此问题
parameterMap: function (options, operation) {
            return {
                division: options.filter.filters[0].value
            }
        }

并将值字段更改为:

dataValueField: "CodeAndDescription",

所以我猜我部分没有向EO提供正确的信息,但希望这可以帮助一个Jam的人。