Добавление двух значений в функцию автозаполнения ajax в веб-формах Asp.net - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть текстовое поле поиска, и я хотел бы включить в него проверку автозаполнения. При вводе одной буквы автозаполнения нужно дать вам все названия с этой буквой. Я нашел учебник по этому вопросу, но моя проблема в том, что я хотел бы реализовать две кнопки-переключателя, и если первая из них будет отмечена, она даст вам только подсказку для клиентов, а если будет выбрана вторая, она предложит вам только рекомендации для компаний.

Я пробовал использовать этот код в веб-сервисе .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>

Нужно ли реализовать что-то еще для радиокнопок. Моя ценность - радио0 и радио1. Спасибо!

1 Ответ

0 голосов
/ 04 ноября 2019

В вашем сервисе имя метода - GetClientNames, но при вызове ajax вы вызываете метод GetStudentNames. Скорее всего, это может быть проблемой. Если это не проблема, пожалуйста, поделитесь своей ошибкой, чтобы я мог помочь вам.

...