0

ASP.NETは初めてですが、AJAXを使用してアプリケーションで検索ボックスを作成しています。

例:ユーザーがテキストボックスに「abc」と入力すると、テキストボックスは「abc」で始まるデータベースからデータをフェッチします。

abc次に、listBoxで始まるすべての文字列を表示したいのですが、データテーブルでデータをフェッチしていて、データはデータテーブルで適切に取得されています。

Datatableからリストボックスを埋める方法は?

これが私のコードスニペットです。

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");
            }
        }
    }
}

どんな助けでも適用されます!!

前もって感謝します。

4

1 に答える 1

0

AjaxControlToolkitのAutoCompleteExtenderを使用することをお勧めします。実装が簡単で、十分にテストされています。説明とコードのリンクは次のとおりです: AutoCompleteExtender

データベースでAutoCompleteExtenderを使用するためのチュートリアルについては、次のリンクを確認してください

このコードプロジェクトの記事を確認してください

于 2012-04-13T05:43:15.307 に答える