i want search city database. when user type initials. used following autocomplete jquery plugin, (asp.net 3.5 + vs 2008)
<link href="css/jquery.autocomplete.css" rel="stylesheet" type="text/css" /> <script src="scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script src="scripts/jquery.autocomplete.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function() { $("#<%=txtcity.clientid%>").autocomplete("search_cs.ashx"); }); </script> and search_cs.ashx class is,
<%@ webhandler language="c#" class="search_cs" %> using system; using system.web; using system.data.sqlclient; using system.configuration; using system.text; public class search_cs : ihttphandler { public void processrequest (httpcontext context) { string prefixtext = context.request.querystring["q"]; using (sqlconnection con = datasetclass.condb()) { //con.connectionstring = configurationmanager // .connectionstrings["constr"].connectionstring; using (sqlcommand cmd = new sqlcommand("select distinct cname city cname @citytext + '%'", con)) { //cmd.commandtext = "select contactname customers " + //"contactname @searchtext + '%'"; cmd.parameters.addwithvalue("@citytext", prefixtext); cmd.connection = con; stringbuilder sb = new stringbuilder(); //con.open(); using (sqldatareader sdr = cmd.executereader()) { while (sdr.read()) { sb.append(sdr["cname"]) .append(environment.newline); } } con.close(); context.response.write(sb.tostring()); } } } public bool isreusable { { return false; } } } this works fine problem plugin works once. after when type initials, autocomplete not work untill refresh page. tried many solutions in vain. please me out stucking here 2 weeks.
thing need remember $(document).ready() calls first time when page load. after ajax/partial postback method not call means text box no longer have auto-complete functionality. off problem should wrap code in function
function bind() { $("#<%=txtcity.clientid%>").autocomplete("search_cs.ashx"); } and call in
$(document).ready(function() { bind(); } and in
function pageload() { bind(); } have great article http://encosia.com/document-ready-and-pageload-are-not-the-same/
Comments
Post a Comment