DropDownList Children Binding

时间:2015-08-24 10:19:37

标签: javascript c# asp.net-mvc kendo-ui telerik

我的下拉列表存在问题,我无法弄清楚如何解决它。

进入我的视图有两种不同的方式:添加新内容和编辑。

1)添加新:在这种情况下,我的下拉列表与另一个相关,一切都很好。 下拉列表被锁定并为空,直到我在另一个中选择了一些内容。

2)编辑:在这种情况下,我的下拉列表已使用存储的数据进行绑定。当然,如果我更改“父”中的选定项目,我也想将数据更改为子项。

问题出现在2种情况中:当我从相关下拉列表中的存储数据中选择其他内容时。 它绑定了正确的数据,但它首先提供一个空项,而不是第一个数据。

我该如何解决?

                            <%=Html.Kendo().DropDownListFor(model => model.GNR_FK)
                                .Name("GNR_FK")                                                                 .BindTo((IEnumerable<Models.Widget.Combo>)ViewData["Customer"])
                                .DataTextField("descriptionText")
                                .DataValueField("valueID")
                                .Value(Model.GNR_FK.ToString())
                                .Events(e =>
                                        {
                                            e.Select("onSelect");
                                        })                                            
                            %>

                            <%=Html.Kendo().DropDownListFor(model => model.CNT_FK)                                    .BindTo((IEnumerable<Models.Widget.Combo>)ViewData["Sender"])
                                .Name("CNT_FK")
                                .DataTextField("descriptionText")
                                .DataValueField("valueID")
                                %>

条件:

        if (Model.PK == 0)
        {
            loadValues(current);
        }
        else
        {
            loadEditValues(current);
        }


    public JsonResult loadValues(Models.Model current, int PK = 0)
    {

            IDataReader sender = Model.getSender(PK);
            Models.Widget.Combo SenderNA = new Models.Widget.Combo();
            List<Models.Widget.Combo> receiveSender = new List<Models.Widget.Combo>();

            SenderNA.valueID = 0;
            SenderNA.descriptionText = "NA";
            receiveSender.Add(SenderNA);

            while (sender.Read())
            {
                Models.Widget.Combo newItem = new Models.Widget.Combo();

                newItem.valueID = int.Parse(sender["PK"].ToString());
                newItem.descriptionText = sender["SURNAME"].ToString();

                receiveSender.Add(newListItem);
            }

            return Json(receiveSender, JsonRequestBehavior.AllowGet);
    }


    private void loadEditValues(Models.Model current)
    {

            int selected = current.GNR_FK;

            IDataReader sender = current.getSender(selectedCustomer);

            Models.Widget.Combo SenderNA = new Models.Widget.Combo();
            List<Models.Widget.Combo> receiveSender = new List<Models.Widget.Combo>();

            SenderNA.valueID = 0;
            SenderNA.descriptionText = "NA";
            receiveSender.Add(SenderNA);

            while (sender.Read())
            {
                Models.Widget.Combo newItem = new Models.Widget.Combo();

                newItem.valueID = int.Parse(sender["PK"].ToString());
                newItem.descriptionText = sender["SURNAME"].ToString();

                receiveSender.Add(newListItem);            


                ViewData["List"] = receiveSender;
            }         

    }

脚本:

   function onSelect(e) {
        var dataItem = this.dataItem(e.item);
        var PK = dataItem.valueID;

        $.ajax({
            type: 'POST',
            url: '/Project/loadValues',
            data: "{'PK':'" + PK + "'}",
            contentType: 'application/json; charset=utf-8',

            success: function (result) {     
                $("#CNT_FK").data("kendoDropDownList").dataSource.data(result);

            },
            error: function (err, result) {
                alert("Error" + err.responseText);
            }

        });
    }

此致

0 个答案:

没有答案