Google에서 검색을하고 싶습니다.자동 완성 및 Ajax로 검색
웹 서비스를 사용하여 텍스트 상자에 데이터베이스의 모든 데이터를 표시 할 수 있습니다. 내 코드 그게 전부 :
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();
}
내 문제는 지금, 난 단지 데이터베이스에서 이름이 있는지 확인하십시오. 그러나 수색을 위해서 나는 ID가 필요합니다. 누가 텍스트 형식으로 표시하지 않고 ID를 쿼리 할 수 있습니까? 내 문제를 이해하시기 바랍니다. 내 영어가 너무 좋지 않아 ...
도와 줘서 고마워!
이 매우 유용한 답변 주셔서 대단히 감사합니다! 정말로 나를 도왔습니다 – Luca
@GarethD 프로젝트 이름이 고유하면 여기에 고유 한 프로젝트 이름이 있다고 가정합니다. 왜 OP가 ID 필드를 원하는지! – Damith
@Damith 그렇습니다. 프로젝트 이름이 고유하지 않은 경우 좋은 점입니다. 사용자가 자동 완성에 나타나는 2 개의 프로젝트 중 어떤 것을 선택할지 어떻게 알 수 있습니까? – GarethD