首页 > 解决方案 > 动态下载数据并设置为 DevExtreme TextBox

问题描述

情况描述:

我有选择框,我在那里选择一个人(在那里,我从数据库下载整个员工列表)。我还有两个字段(我想输入其他列(同一行)的值(该员工的数据))

控制器

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);
        }
    }
}

我试过了:

cshtml页面

                          @(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>```

不工作: 代码没有抛出错误,但是没有将下载的数据输入到文本框中

标签: javascriptasp.net-coredevexpress

解决方案


使用其“选项” api 访问所需的小部件(请参阅演示),例如:

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);
}

推荐阅读