0

I want to create a textbox (for entering names) in my aspx application which suggests names of Employees from database.

I am pasting my code below. I am using Mysql

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title>Untitled Page</title>
  </head>
  <body>
    <form id="form1" runat="server">
    <div>
       <asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged"></asp:TextBox>
       <asp:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" 
                  ServiceMethod="GetCompletionList2" TargetControlID="TextBox1" 
                  UseContextKey="True">
       </asp:AutoCompleteExtender>
    </div>  
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    </form>
  </body>
</html>

Default.aspx.cs:

// here we use a readymade class for database operations to Mysql server
using System;
using System.Configuration;
using System.Data;

using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;


using Gbs.DAL;  // for ..redymade class..

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
    public static string[] GetCompletionList2(string prefixText, int count, string contextKey)
    {
        myDb db = new myDb();// its class in Dal.cs

        string sql = "Select * from empdata Where empname like @prefixText";
        DataTable dt = db.getDataTable(sql);     // method in redymade class
        string[] items = new string[dt.Rows.Count];
        int i = 0;
        foreach (DataRow dr in dt.Rows)
        {
            items.SetValue(dr["empname"].ToString(), i);
            i++;
        }
        return items;
    }

    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
    }
}

// there is no any error, the program runs successfully

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
  • If there are no errors, and the program runs successfully (which to me means that it does what it is supposed to do), then what is your question? What is not working? – Oded Jul 03 '10 at 10:10
  • Please Check the Following Link http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AutoComplete/AutoComplete.aspx we need specify this before the method [System.Web.Services.WebMethod] [System.Web.Script.Services.ScriptMethod] – Ramakrishnan Jul 03 '10 at 12:56

1 Answers1

0

AutocompleteExtender needs an .asmx web service which can be called from javascript. It won't work from your Default.aspx.

Mart
  • 512
  • 5
  • 13