mvc中数据库中的自动填充文本框无法正常工作

时间:2018-01-30 12:44:40

标签: c# jquery ajax asp.net-mvc model-view-controller

我正在尝试从数据库中实现自动完成文本框功能,但它无法正常工作。我试过下面的代码。

 $(document).ready(function () {
            $("#Manufacturer").autocomplete({
                source: function (request, response) {
                    debugger
                    $.ajax({
                        url: '@Url.Action("GetRecord", "Company")',
                        type: "POST",
                        dataType: "json",
                        data: { prefix: request.term },
                        success: function (data) {
                            response($.map(data, function (item) {

                                return { label: item.Manufacturer, value: item.Manufacturer };
                            }))

                        },
                        error: function (response) {
                            alert(response.responseText);
                        },
                    failure: function (response) {
                        alert(response.responseText);
                    }

                    })
                },

            });
        });

这是我的ajax调用方法

 [HttpPost]
        public JsonResult GetRecord(string prefix)
        {
            BAL_Branches ObjBranch = new BAL_Branches();
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            List<ManufacturerCertificates> menufact = new List<ManufacturerCertificates>();
            ds = ObjBranch.GetManufacturerCertsForAutocomplate(prefix, Convert.ToInt64(Session["BranchID"]));
            dt = ds.Tables[0];
            // mm.BranchesList[i].ManufactCertsList = Common.ConvertDataTable<ManufacturerCertificates>(dt);
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                menufact.Add(new ManufacturerCertificates
                {
                    Manufacturer = dr["Manufacturer"].ToString(),
                    ID =Convert.ToInt64( dr["ID"].ToString())

                });
            }
           // menufact = dt.ToList<ManufacturerCertificates>();
            return Json(menufact, JsonRequestBehavior.AllowGet);
        }

ajax方法返回正确的值,但不显示自动填充文本框。有什么建议吗?

谢谢你的进步。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,将$(document).ready()函数更改为$(window).load()

$(window).load(function () {
            $("#Manufacturer").autocomplete({
                source: function (request, response) {
                    debugger
                    $.ajax({
                        url: '@Url.Action("GetRecord", "Company")',
                        type: "POST",
                        dataType: "json",
                        data: { prefix: request.term },
                        success: function (data) {
                            response($.map(data, function (item) {

                                return { label: item.Manufacturer, value: item.Manufacturer };
                            }))

                        },
                        error: function (response) {
                            alert(response.responseText);
                        },
                    failure: function (response) {
                        alert(response.responseText);
                    }

                    })
                },

            });
        });

并应用z-index

.ui-widget-content {
    z-index: 99999 !important;
}

现在它对我来说很好。