无法从数据表填充列表框(自动完成文本框)

时间:2012-04-13 05:41:08

标签: asp.net ajax ado.net listbox datatable

我是ASP.NET的新手,我正在使用AJAX在我的应用程序中创建一个搜索框。

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

然后我想在listBox中显示以abc开头的所有字符串,我在datatable中获取数据,数据在数据表中正确显示,

如何从Datatable填充我的ListBox?

这是我的代码片段,

SecrchBox.aspx中的

代码 onkeyup i am calling this getdata()

<%@ 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>

Newspage中的代码,aspx.cs

public partial class Newpage : System.Web.UI.Page
{
    public string ConnectionString = "Data Source=ilsql;Initial Catalog=krunal_DB;User ID=krunaldbuser;Password=krunal@2012;";
    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");
            }
        }
    }
}

任何帮助都会得到满足!!

提前致谢。

1 个答案:

答案 0 :(得分:0)

我建议使用AjaxControlToolkit中的AutoCompleteExtender。它更容易实现,并已经过良好的测试。 这是与描述和代码的链接: AutoCompleteExtender

请查看以下链接,以获取使用AutoCompleteExtender with Database

的教程

检查此代码项目article