如何使用文本框自动完成从选定的特定字段中获取ID值
本文关键字:字段 ID 获取 文本 何使用 | 更新日期: 2024-10-21 07:24:21
这是我用来获得自动完成的代码
在HTML视图中
<script>
$(function () {
$("#autoComp").autocomplete({
source: '@Url.Action("GetAutoComp")',
select: function (e, i) {
$("#autoComp").val(i.item.val);
},
minLength: 1
});
});
</script>
在行动GEAUTOCOMP我已经调用了一个网络服务
public JsonResult GetAutoComp(string term)
{
ProcorreService.ProcorreWebService service = new ProcorreService.ProcorreWebService();
string[] rst = service.Autocomplete(term);
return Json(rst, JsonRequestBehavior.AllowGet);
}
在一个单独的服务器Web服务中,我写了以下代码来从数据库中检索数据
[WebMethod]
public List<string> Autocomplete(string autoName)
{
con.ConnectionString = ConfigurationManager.ConnectionStrings["TESTDBConnectionString"].ConnectionString;
String query = @"Select CountryName,ID from Country where CountryName LIKE ''+@SearchFname+'%'";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@SearchFname", autoName);
List<string> list = new List<string>();
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
list.Add(string.Format("{0}-{1}", dr["COYNTRYNAME"], dr["ID"]));
}
return list;
}
这段代码运行良好,它将数据检索到HTML视图,但当选择列表时,它会返回国家名称,但我需要获得要返回的国家的ID
因此,为了获得国家的ID,我尝试了以下方法
我已尝试将列表转换为Json,如自动完成所需。
此外,我还尝试在jquery内部使用ajax从jquery中检索数据。
$(document).ready(function () { $("#<%=txtSearch.ClientID %>").autocomplete({ source: function (request, response) { $.ajax({ url: '<%=ResolveUrl("~/Service.asmx/GetCustomers") %>', data: "{ 'prefix': '" + request.term + "'}", dataType: "json", type: "POST", contentType: "application/json; charset=utf-8", success: function (data) { response($.map(data.d, function (item) { return { label: item.split('-')[0], val: item.split('-')[1] } })) }, error: function (response) { alert(response.responseText); }, failure: function (response) { alert(response.responseText); } }); }, select: function (e, i) { $("#<%=hfCustomerId.ClientID %>").val(i.item.val); }, minLength: 1 }); });
在第二种情况下,它显示一个错误,例如请求的资源上不存在"Access Control Allow Origin"标头。因此,不允许Origin访问以解决此错误。我已尝试在服务器中添加以下标头,但它不能解决问题
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- Enable Cross Domain AJAX calls -->
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
</customHeaders>
</httpProtocol>
</system.webServer>
我已经尝试过通过多种方法获取Id,但无法获得任何帮助或如何获取Id的链接。提前感谢
在处理ajax调用返回的数据时,将val替换为value
return {
label: item.split('-')[0],
value: item.split('-')[1]
}
并修改选择如下
select: function (e, i) {
$("#<%=hfCustomerId.ClientID %>").val(i.item.value);
}