Dynami c Загрузка данных и установка в DevExtreme TextBox - PullRequest
0 голосов
/ 27 января 2020

Описание ситуации:

У меня есть selectbox, я выбираю там человека (там я загружаю полный список сотрудников из базы данных). У меня есть еще два поля (я хотел бы ввести значения из других столбцов (той же строки) (данные этого сотрудника))

Контроллер

using AppEcp.Models;
using DevExtreme.AspNet.Data;
using DevExtreme.AspNet.Mvc;
using Microsoft.AspNetCore.Mvc;
using System.Linq;

namespace AppEcp.Controllers
{
    public class UzytkownicyController : Controller
    {
        private readonly UzytkownicyDbContext _uzytkownicyContext;

        public UzytkownicyController(UzytkownicyDbContext uzytkownicyContext)
        {
            _uzytkownicyContext = uzytkownicyContext;
        }

          public IActionResult GetItems(DataSourceLoadOptions loadOptions)
        {
            var GetMethod = _uzytkownicyContext.Uzytkownicy.Where(i => i.Firma == "Pekao Leasing").Select(i => new
            {
                i.Id,
                i.Nazwa,
                i.Departament,
                i.Login
            });

            return Json(DataSourceLoader.Load(GetMethod, loadOptions));
        }

        [HttpGet]
        public ActionResult GetDepartmentAndManager(string nazwaValue)
        {
            var danePracownika = _uzytkownicyContext.Uzytkownicy.Where(x => x.Nazwa == nazwaValue).Select(s => new 
            {
                UserDepartament = s.Departament,
                UserManager = s.Manager
            });

            return Json(danePracownika);
        }
    }
}

Я пытался:

cs html страница

                          @(Html
                           .DevExtreme()
                           .SelectBox()
                           .ID("Id_name")
                           .DataSource(d => d
                               .Mvc()
                               .Controller("Uzytkownicy")
                               .Key("Id")
                               .LoadAction("GetItems")
                           )
                           .DisplayExpr("Nazwa")
                           .ValueExpr("Id")
                           .SearchEnabled(true)
                           .OnValueChanged("getDepAndMan")
                        )
                        @(Html.DevExtreme().TextBox()
                       .ID("Id_department"))

                        @(Html.DevExtreme().TextBox()
                           .ID("Id_manager"))


<script type="text/javascript">

    function getDepAndMan() {

        var nazwaValue = document.getElementById("Id_name").value;

        $.ajax({
             type: "GET",
             url: '@Url.Action("GetDepartmentAndManager", "Uzytkownicy")',
             contentType: 'application/json; charset=utf-8',
             data: { nazwaValue : nazwaValue},
             dataType: "json",
             success: function (data) {
                document.getElementById("Id_department").value = (data.UserDepartament);
                document.getElementById("Id_manager").value = (data.UserManager);
             },
             error: function () {
                alert("bad code noob");
             }
         });
    }
</script>```

Не работает: Код не выбрасывает ошибка, но не вводит загруженные данные в текстовые поля

1 Ответ

0 голосов
/ 27 января 2020

Получить доступ к необходимому виджету можно с помощью его API «options» (см. this demo), например:

success: function (data) {
    alert(data.UserDepartament + " " + data.UserManager);

    //document.getElementById("Id_department").value = (data.UserDepartament);
    //document.getElementById("Id_manager").value = (data.UserManager);

    $("#Id_department").dxTextBox("instance").option("value", data.UserDepartament);
    $("#Id_manager").dxTextBox("instance").option("value", data.UserManager);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...