如何使用SQL数据库创建自动完成文本框,例如Google放置文本框

时间:2015-06-16 11:14:40

标签: c# jquery mysql asp.net autocomplete

我必须在我的网络表单中为以下条件创建自动完整文本框

  1. 如果我输入国家/地区名称,则自动完成建议应显示存储在我的数据库中的国家/地区,州名和城市名称列表。

  2. 如果我输入城市名称,则自动建议应显示我的数据库中的国家/地区名称,类似州名也

  3. 例如:如果用户输入

    塔米尔纳杜

    然后结果将是

    tamilnadu,印度

    如果用户在文本框中键入chennai 那么自动完成建议应该是

    chennai,tamilnadu,india

    如果用户输入Erode tamilnadu

    然后结果应该是

    侵蚀,塔米尔纳杜,印度

    1. 我为每个值使用不同的表格,例如城市,州和国家
    2. 直到现在我所做的一切都是一个只显示城市搜索的文本框

      我的问题是如何实现上面提到的结果,例如输入到文本框的多个条目和多个建议作为输出,如google place search

      请指导我,我在网上搜索,但我找不到完美的解决方案

      这是我的脚本代码

       <script  type ="text/javascript" >
          $(function () {
              $('#<%=txtSearch.ClientID%>').autocomplete({
                  source: function (request, response) {
                      $.ajax({
                          url: "Default.aspx\getCityName",
                          data: "{'pre':'" + request.term + "'} ",
                          datatype: "json",
                          type: "POST",
                          contentType: "application/json; charset=utf-8",
                          success: function (data) {
                              response($.map(data.d, function (item) {
      
                                  return {
                                      cityname: item.cityname,
                                      country: item.country,
      
                                      json: item
      
                                  }
                              }));
      
                          },
                    error: function (XMLHttpRequest, textStatus,                               errorThrown) {
                              alert(textStatus);
                          }
      
                      });
                  },
      
                  focus: function (event, ui) {
                      $('#<%=txtSearch.ClientID%>').val(ui.item.cityname);
                      return false;
                  },
                  select: function (event, ui) {
                      $('#<%=txtSearch.ClientID%>').val(ui.item.citycame);
                      return false;
                  }
      
              }).data("ui.autocomplete")._renderItem = function (ul, item) {
                  return $("<li>")
                  .append("<a>City:" + item.cityname + "<br>Country :" + item.country + "</a>")
                  .appendTo(ul);
              };
      
          });
      
      </script>
      

      我的网络服务代码:

       [WebMethod]
          [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
          public static List<Searchcity> getCityName(String pre) 
          {
              List<Searchcity> allcity = new List<Searchcity>();
              using(MydatabaseEntities dc = new MydatabaseEntities())
              {
                  allcity = (from a in dc.Searchcities
                             where a.cityname.StartsWith(pre)
                             select a).ToList();
      
              }
              return allcity;
          }
      

2 个答案:

答案 0 :(得分:0)

这可能会对你有帮助!

<强> AJAX

 var Autoarr = [];

        $.ajax({
                 url: "',
                dataType: "json",
                async: false,
                success: function (data) {
                    var result = $.map(data, function (val, key) {
                        return { type: key, cityname: val.cityname, country: val.country};
                    });

                    for (var i = 0; i < result.length; i++) {
                        Autoarr[i] = result[i].cityname;
                    }

                }
            });

<强> AUTOCOMPLETE

 $(function () {

                $("#category").autocomplete({
                    source: Autoarr
                });
            });

答案 1 :(得分:0)

您必须编写带有3种颜色的SQL查询。 1 GT;国家2&gt;状态3&gt;市。 SQL查询应该有3个条件。

如下所示

if(select count(1) from Table where cityname like "@cityname")
begin

select city,state,country from table

end

else if(select count(1) from Table where state like "@statename")
begin

select 1 as city, state,country from table

end

else if(select count(1) from Table where country like "@countryname")

begin

select 1 as city, 1 as state, country from table

end

请使用ajax在json中获取此值。

然后在每个专栏附加','分隔符(例如印度泰米尔纳德邦的Chennai)。

如果任何coloumn值为1,则省略它。例如 (1,泰米尔纳德邦,印度然后省略1.所以泰米尔纳德邦,印度)。你需要用这个例子来思考。如果你有不同的表,那么使用连接。