Я хочу сделать поиск, подобный им, из google.Поиск с автозаполнением и Ajax
Я сделал это так далеко, что могу показать все данные из базы данных в своем текстовом поле с помощью webservice. Вот мой код:
Webform.aspx
<%--**Start Search**--%>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services><asp:ServiceReference Path="~/WebService.asmx" /></Services>
</asp:ScriptManager>
<%--Search-Textbox--%>
<asp:TextBox runat="server" ID="txtSearchInput" Width="100%" />
<asp:Button ID="btnSearch" runat="server" Text="Suche" onclick="btnSearch_Click" />
<%--Autocomplete (Ajax)--%>
<asp:AutoCompleteExtender ID="AutoComplete1" runat="server" TargetControlID="txtSearchInput"
ServiceMethod="GetNames" ServicePath="~/WebService.asmx" MinimumPrefixLength="1"
EnableCaching="true" CompletionInterval="1000" CompletionSetCount="20">
</asp:AutoCompleteExtender>
<%--**End Search**--%>
Webservice.asmx
[WebMethod]
public string[] GetNames(string prefixText, int count)
{
List<string> items = new List<string>(count);
DataSet ds = new DataSet();
string cs = ConfigurationManager.ConnectionStrings["CSLinker"].ConnectionString;
using (SqlConnection connection = new SqlConnection(cs))
{
string sql = "SELECT Name FROM tabProjects WHERE Name LIKE '" + prefixText + "%' UNION all SELECT Name FROM tabLinks WHERE Name LIKE '" + prefixText + "%'";
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(sql, connection);
adapter.Fill(ds);
}
foreach (DataRow dr in ds.Tables[0].Rows)
{
items.Add(dr["Name"].ToString());
}
return items.ToArray();
}
Моя проблема теперь в том, что я только имя из базы данных. Но для поиска мне нужен идентификатор. Может кто-нибудь сказать мне, как я могу запросить идентификатор, не показывая его в текстовой форме? Надеюсь, вы поймете мою проблему. Мой английский не так хорош ...
Спасибо за помощь!
спасибо большое за это очень полезный ответ! Действительно помог мне – Luca
@GarethD вы предполагаете название проекта уникальным, если имя проекта уникально здесь, почему OP хочет ID поле! – Damith
@Damith Это хороший момент, однако если имя проекта не уникально, как пользователь узнает, какой из двух проектов, входящих в автозаполнение, выбрать? – GarethD