KendoDropDownList очистить значение - PullRequest
0 голосов
/ 20 апреля 2020

Я использую kendoDropDownList и имею следующий код:

                <div id="memberNotInit-grid"></div>
               <script>
                        $(document).ready(function () {
                            $("#memberNotInit-grid").kendoGrid({
                                dataSource: {
                                    type: "json",
                                    transport: {
                                        read: {
                                            url: "@Html.Raw(Url.Action("MemberNotInitList", "RandomPoolInit"))",
                                            type: "POST",
                                            dataType: "json",
                                            data: function() {
                                                var data = {
                                                };
                                                addAntiForgeryToken(data);
                                                return data;
                                            }
                                        }
                                    },
                                    schema: {
                                        data: "Data",
                                        total: "Total",
                                        errors: "Errors"
                                    },
                                    error: function(e) {
                                        display_kendoui_grid_error(e);
                                        // Cancel the changes
                                        this.cancelChanges();
                                    },
                                    pageSize: @(Model.PageSize),
                                    serverPaging: true,
                                    serverFiltering: true,
                                    serverSorting: true
                                },
                                pageable: {
                                    refresh: true,
                                    pageSizes: [@(Model.AvailablePageSizes)],
                                    @await Html.PartialAsync("_GridPagerMessages")
                                },
                                editable: {
                                    confirmation: "@T("Common.DeleteConfirmation")",
                                    mode: "inline"
                                },
                                scrollable: false,
                                columns: [
                                     {
                                        field: "FirstName",
                                        title: "@T("PoolMemberList.Fields.FirstName")",
                                        width: 150
                                    },
                                    {
                                        field: "LastName",
                                        title: "@T("PoolMemberList.Fields.LastName")",
                                        width: 150
                                    },
                                    {
                                        field: "Status",
                                        template: columnTemplateFunction
                                    },
                                    {
                                        field: "Reason",
                                        width: 150,
                                        template: "<input data-bind='value:Reason' class='reasonTemplate' />",
                                        //hidden: true
                                    }
                                ],
                                dataBound: function (e) {
                                    var grid = e.sender;
                                    var items = e.sender.items();

                                    items.each(function (e) {
                                        var dataItem = grid.dataItem(this);
                                        var ddt = $(this).find('.dropDownTemplate');

                                        $(ddt).kendoDropDownList({
                                            value: dataItem.value,
                                            dataSource: ddlDataSource,
                                            dataTextField: "displayValue",
                                            dataValueField: "Status",
                                            change: onDDLChange
                                        });

                                        var reason = $(this).find('.reasonTemplate');
                                        $(reason).keydown(reasonChange);
                                        reason.hide();
                                    });
                                }
                            });

                            var ddlDataSource = [
                            {
                                Status: @((int)DriverRandomPoolStatus.Enrollment),
                                displayValue: "Enrollment"
                            },
                            {
                                Status: @((int)DriverRandomPoolStatus.Active),
                                displayValue: "Active"
                            },
                            {
                                Status: @((int)DriverRandomPoolStatus.Excused),
                                displayValue: "Excused"
                            }
                            ];

                            function columnTemplateFunction(dataItem) {
                                var input = '<input class="dropDownTemplate"/>'

                                return input
                            };

                            function onDDLChange(e) {
                                var element = e.sender.element;
                                var row = element.closest("tr");
                                var grid = $("#memberNotInit-grid").data("kendoGrid");
                                var dataItem = grid.dataItem(row);
                                dataItem.set("Status", e.sender.value());
                                //alert(e.sender.value());

                                if (dataItem.Status == @((int)DriverRandomPoolStatus.Active)) {
                                    $.ajax({
                                        method: "POST",
                                        url: "@Html.Raw(Url.Action("ChangeMemberStatus", "RandomPoolInit"))",
                                        data: { id: dataItem.Id, status: dataItem.Status }
                                    }).done(function () {
                                        grid.tbody.find("tr[data-uid=" + dataItem.uid + "]").hide();
                                        grid.pager.refresh();
                                    });
                                }

                                if (dataItem.Status == @((int)DriverRandomPoolStatus.Excused)) {
                                    grid.tbody.find("tr[data-uid=" + dataItem.uid + "]").find('.reasonTemplate').show();
                                    var ddl = grid.tbody.find("tr[data-uid=" + dataItem.uid + "]").find('.dropDownTemplate');
                                    //ddl.value(dataItem.Status);
                                }
                            };

                            function reasonChange(event) {
                                if (event.keyCode === 13) {
                                    var element = event.target;
                                    var row = element.closest("tr");
                                    var grid = $("#memberNotInit-grid").data("kendoGrid");
                                    var dataItem = grid.dataItem(row);
                                    var r = grid.tbody.find("tr[data-uid=" + dataItem.uid + "]").find('.reasonTemplate').val();

                                    $.ajax({
                                        method: "POST",
                                        url: "@Html.Raw(Url.Action("ChangeMemberStatus", "RandomPoolInit"))",
                                        data: { id: dataItem.Id, status: dataItem.Status, reason: r }
                                    }).done(function () {
                                        grid.tbody.find("tr[data-uid=" + dataItem.uid + "]").hide();
                                        grid.pager.refresh();
                                    });
                                }
                            }
                        });
                </script>

, но когда мы выбираем «Исключено» из выпадающего списка, значение выпадающего списка сбрасывается до Enrollment (первое значение из выпадающего списка). Почему так и как это исправить?

1 Ответ

0 голосов
/ 23 апреля 2020

Я исправил это следующим образом:

                                        $(ddt).kendoDropDownList({
                                            value: dataItem.Status,
                                            .....
                                        });

не:

value: dataItem.value,
...