2012-04-13 86 views
0

我是ASP.NET新手,我在我的应用程序中使用AJAX制作搜索框。无法从数据表中填充列表框(自动完成文本框)

例如:如果用户在文本框中输入“abc”,那么文本框将从数据库中获取以“abc”开头的数据。

,然后我要显示所有与abc ListBox中开始,我获取DataTable中的数据,以及数据在数据表中正确地来的字符串,

如何从数据表中填写我的列表框?

这里是我的代码片段,在SecrchBox.aspx

代码 onkeyup i am calling this getdata()

在Newspage
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SearchBox.aspx.cs" Inherits="SearchBox" %> 

<!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> 
    <title></title> 
    <script type="text/javascript" language="javascript"> 
     function getdata() { 

      var TextBox1 = document.getElementById("<%= TextBox1.ClientID %>"); 
      var ltrSearchResults = document.getElementById("<%= ltrSearchResults.ClientID %>"); 
      var str = TextBox1.value; 
      var xmlhttp; 
      if (str.length == 0) { 
       ltrSearchResults.innerHTML = ""; 
       return; 
      } 
      if (window.XMLHttpRequest) { 
       xmlhttp = new XMLHttpRequest(); 
      } 
      else { 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 

      xmlhttp.open("GET", "Newpage.aspx?q=" + str, false); 
      xmlhttp.send(); 
      ltrSearchResults.innerHTML = xmlhttp.responseText; 

      return false; 

     } 

</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox><br /> 
     <asp:Label runat="server" ID="Label1" ></asp:Label><br /> 
    </div> 
    </form> 
</body> 
</html> 

代码,aspx.cs

public partial class Newpage : System.Web.UI.Page 
{ 
    public string ConnectionString = "Data Source=ilsql;Initial Catalog=krunal_DB;User ID=krunaldbuser;[email protected];"; 
    string[] symbol=new string[2170]; 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 
      GetData();   
     } 
    } 

    private void GetData() 
    { 
     if (Request.QueryString["q"] != null) 
     { 
      string Value = Convert.ToString(Request.QueryString["q"]); 
      StringBuilder str = new StringBuilder(); 
      // string str; 

      if (Value.Length > 0) 
      { 
       SqlConnection cn = new SqlConnection(ConnectionString); 
       cn.Open(); 

       SqlCommand cmd = new SqlCommand("SELECT DISTINCT Scrip FROM dbo.SearchBoxData where Scrip Like '%" + Value + "%'", cn); 
       SqlDataAdapter da = new SqlDataAdapter(cmd); 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 
       cn.Close(); 

       if (dt.Rows.Count > 0) 
       { 
        foreach (DataRow dr in dt.Rows) 
        {       
         str.Append(Convert.ToString(dr["Scrip"]) + "<br>"); 
        } 

        str = str.Remove(str.Length - 2, 2); 
       } 

       Response.Write(str.ToString()); 

      } 
      else 
      { 
       Response.Write("No Result Found"); 
      } 
     } 
    } 
} 

任何帮助将appriciated!

在此先感谢。

+0

使用的WebMethod这一点。使用此链接:http://www.aspsnippets.com/Articles/ASPNet-AJAX-AutoCompleteExtender-Pass-Additional-Parameter-to-WebMethod-using-ContextKey.aspx – 2012-04-13 05:55:37

回答

0

我会推荐使用AjaxControlToolkit的AutoCompleteExtender。它更易于实施并且测试良好。 下面是说明和代码的链接: AutoCompleteExtender

检查以下链接教程使用AutoCompleteExtender with Database

检查这个代码项目article

+0

我不能使用下拉和工具包我必须使用文本框。这是需求。 – Krunal 2012-04-13 05:45:14

+0

哦使用AutoCompleteTextbox,从同一个工具包,也更新您的问题标题 – Habib 2012-04-13 05:46:20