0

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

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

然后我想显示所有以abclistBox开头的字符串,我在数据表中获取数据,并且数据在数据表中正确出现,

如何从 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>

新闻页中的代码,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");
            }
        }
    }
}

任何帮助都会得到回报!

提前致谢。

4

1 回答 1

0

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

检查以下链接以获取将AutoCompleteExtender 与数据库一起使用的教程

检查此代码项目文章

于 2012-04-13T05:43:15.307 回答