【发布时间】:2015-06-15 08:54:31
【问题描述】:
我正在 ASP.NET 中开发基于房地产的应用程序。在这里,我想 使用自动完成扩展器来获取城市。我已经尝试了以下
下面是设计部分,我使用了一个名为“txtCity”的TextBox 以及一个目标控件为“txtCity”的自动完成扩展程序,并且
网络服务方法是“GetCities”。
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Ajax AutoCompleteExtender without Webservice</title>
</head>
<body>
<form id="form1" runat="server">
<ajax:ToolkitScriptManager ID="ScriptManager1" runat="server"/>
<div>
<asp:TextBox ID="txtCity" runat="server"></asp:TextBox>
<ajax:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
TargetControlID="txtCity" MinimumPrefixLength="1" EnableCaching="true"
CompletionSetCount="1" CompletionInterval="1000" ServiceMethod="GetCities" >
</ajax:AutoCompleteExtender>
</div>
</form>
</body>
</html>
下面是 Webservice 方法,它将以列表的形式返回城市名称。
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Configuration;
[System.Web.Services.WebMethod]
public static List<string> GetCities(string prefixText)
{
SqlConnection con = new SqlConnection
(ConfigurationManager.ConnectionStrings["dbconnection"].ToString());
con.Open();
SqlCommand cmd = new SqlCommand("select * from City where CityName
like @Name+'%'", con);
cmd.Parameters.AddWithValue("@Name", prefixText);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
List<string> CoityNames = new List<string>();
for (int i = 0; i < dt.Rows.Count; i++)
{
CityNames.Add(dt.Rows[i][1].ToString());
}
return CityNames;
}
在这里,当我输入任何字符时,所有匹配该字符的城市都会以下拉方式显示,并且在选择任何城市后,所选城市会显示在文本框中。
当我搜索另一个城市时,新城市会出现在文本框中,而之前选择的城市会被删除。但我不希望之前选择的城市消失。
我想使用 99acres.com 等网站中使用的功能。
【问题讨论】:
-
您可以使用 Jquery 插件来实现这一点。 jqueryscript.net/form/…
-
我认为没有任何方法可以自定义这些服务器控件。只要您使用它们提供的功能,这些控件就很好。 Jquery 控件为您提供了根据您的需要进行定制的可能性。这样就有很多可用的 jquery 控件,如果不可用,您可以轻松构建自己的控件。
-
我通过适当的缩进更好地格式化了代码(因为它提高了可读性),并且还从您的设计和 Web 服务代码之间的文本中删除了额外的缩进,否则它会隐藏在代码块中.我还改写了句子以更好地解释您的问题。
-
请不要对普通文本使用代码块格式(缩进 4 个字符)。如果要突出显示某些文本,请使用粗体、斜体等文本格式选项。此外,标题中通常不需要语言名称,因为它们是标签的一部分。
标签: c# jquery asp.net autocomplete