我正在尝试从数据库中实现自动完成文本框功能,但它无法正常工作。我试过下面的代码。
$(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方法返回正确的值,但不显示自动填充文本框。有什么建议吗?
谢谢你的进步。
答案 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;
}
现在它对我来说很好。