CAFE

ASP.NET WEBFORM

JQuery UI Autocomplete 와 ashx 핸들러로 자동화 완성 구현하기

작성자심재운|작성시간11.12.18|조회수762 목록 댓글 1



jquery ui 중에 autocomplete 에 대한 상세 내용은 아래 경로를 참고해 주세요.




tags 의 input 입력 란에 값을 입력하게 되면 autocompelte 함수가 해당 dom 움직직임을 감지하여 이를 해당 autocomplete.ashx 핸들러에 입력값을 전송합니다.




<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Auto complete demo</title>
    <script type="text/xxjavascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type="text/xxjavascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
    <script type="text/xxjavascript">
        $(document).ready(function ()
        {
            $("#tags").autocomplete({source: '/Autocomplete.ashx'});
         });
    </script>
</head>
<body>
    <input type="text" id="tags" />
</body>
</html>



여기서 자세히 볼 부분은 사용자가 입력한 값을 어떻게 가져오는지 확인하시면 되는데요.

context.Request.QueryString["term"] 와 같이 사용자가 입력한 값을 get 방식으로 전송하여 이를 얻을 수 있습니다.


데이터는 string 배열에 담아서 이를 자바스크립트 배열로 반환하기 위해서 xxJavaScriptSerializer().Serialize() 메소드를 사용해야

하며, 이는 using System.Web.Script.Serialization; 을 지정한 후 사용이 가능합니다.


<%@ WebHandler Language="C#" Class="Autocomplete" %>
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Script.Serialization;
using System.Linq;

public class Autocomplete : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/xxxxjavascript";
        string cnString = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
        string sql = "SELECT Firstname + ' ' + Lastname as NAME from Employees where  Lastname like  @term+ '%'";
        SqlCommand cmd = new SqlCommand(sql, new SqlConnection(cnString));
        cmd.CommandType= CommandType.Text;
        cmd.Parameters.AddWithValue("@term", context.Request.QueryString["term"]);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        string[] items = new string[dt.Rows.Count];
        int ctr = 0;
        foreach (DataRow row in dt.Rows)
        {
            items[ctr] = (string) row["NAME"] ;
            ctr++;
        }
         
        context.Response.Write(new xxJavaScriptSerializer().Serialize(items));
     }

    public bool IsReusable
    {
         get
        {
            return false;
        }
    }
}



그리고 위의 jquery ui 의 autocomplete 예제가 아닌 다른 방법에 대한 소스는 첨부해 드리오니 참고해 보시기 바랍니다.



첨부파일 ajaxautocomplete.zip



감사합니다.




다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자심재운 작성자 본인 여부 작성자 | 작성시간 12.01.26 DAUM 측의 스크립트 차단으로인해 코드 내용에 오류가 있습니다. 첨부파일을 다운 받아서 실행 해 보시면 됩니다.
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼