我是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");
}
}
}
}
任何帮助都会得到满足!!
提前致谢。
答案 0 :(得分:0)
我建议使用AjaxControlToolkit中的AutoCompleteExtender。它更容易实现,并已经过良好的测试。 这是与描述和代码的链接: AutoCompleteExtender
请查看以下链接,以获取使用AutoCompleteExtender with Database
的教程检查此代码项目article