我有搜索文本框,我想在其中实现自动完成检查。当您输入一个字母时,自动完成功能需要给您所有带有该字母的名称。我找到了与此相关的教程,但是我的问题是我想实现两个单选按钮,如果选中第一个,它将只为客户提供建议;如果选中第二个,将仅为公司提供建议。
我对Web服务.asmx中的这段代码感到满意
[WebMethod]
public class Autocomplete : System.Web.Services.WebService
{
[WebMethod]
public List<string> GetClientNames(string searchTerm,string rbtnValue)
{
List<string> clientNames = new List<string>();
string connStr = ConfigurationManager.ConnectionStrings["RheosConnString"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr))
{
if (rbtnValue == "radio0")
{
SqlCommand cmd = new SqlCommand("spGetClientNames", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@term", searchTerm);
cmd.Parameters.Add(param);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
clientNames.Add(sdr["ime"].ToString());
}
}
else
{
SqlCommand cmd = new SqlCommand("spGetCompanyNames", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@term", searchTerm);
cmd.Parameters.Add(param);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
clientNames.Add(sdr["naziv"].ToString());
}
}
}
return clientNames;
}
}
我的Javascript看起来像这样
<script type="text/javascript" language="javascript">
$(function () {
$('#<%=txtSearch.ClientID%>').autocomplete({
source: function (request, response) {
var value = $("form input[type='radio']:checked").val();
$.ajax({
url: "Autocomplete.asmx/GetStudentNames",
data: {searchTerm: request.term, rbtnValue:value},
type: "POST",
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data) {
response(data.d);
},
error: function (result) {
alert('Postoji problem s dohvaćanjem zahtjeva');
}
});
},
minLength: 0
});
});
</script>
我是否需要为单选按钮实现其他功能。我的值是radio0和radio1。谢谢!
[在服务中,方法名称为GetClientNames
,但在ajax调用中,您正在调用方法GetStudentNames
。这很可能是问题所在。如果不是这个问题,请与您分享您的错误,以便我们为您提供帮助。