我是ASP.NET的新手,我正在我的应用程序中创建一个搜索框。
例如:如果用户在文本框中输入“abc”,则文本框将从数据库中获取以“abc”开头的数据。我将此数据传递给DataTable
。
它运作正常,
这是我的代码段:
DataTable result = new DataTable();`
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
connString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConsString"].ConnectionString;
SqlConnection conn = new SqlConnection(connString);
conn.Open();
string query = string.Format("SELECT DISTINCT Scrip FROM dbo.SearchBoxData where Scrip Like '{0}%'", TextBox1.Text);
SqlCommand cmd = new SqlCommand(query, conn);
result.Load(cmd.ExecuteReader());
conn.Close();
}
现在,我想在<div>
标记中检索所有这些数据。我该如何检索和显示?
任何帮助将不胜感激。
答案 0 :(得分:2)
您应该使用像ListView或GridView这样的数据绑定控件。我建议创建一个单独的控件来保存列表中的一行,并使用RowDataBound方法分配行数据。使用ListView的ItemDatabound事件的示例 - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemdatabound.aspx
另一方面,您的代码容易受到SQL注入
的攻击答案 1 :(得分:1)
您可能更好地使用数据绑定控件,如ListView(或GridView)控件。这样,您可以使用数据表中的数据创建所需的精美布局。
例如,可以使用ListView:
<asp:ListView ID="lvwItems" runat="server" ItemPlaceholderID="plhItems">
<LayoutTemplate>
<div>
<asp:PlaceHolder ID="plhItems" runat="server"></asp:PlaceHolder>
</div>
</LayoutTemplate>
<ItemTemplate>
<div>
<%# Eval("ColumnFromDataTable")%>
</div>
</ItemTemplate>
</asp:ListView>
在您的代码中,您可以执行以下操作:
lvwItems.DataSource = result;
lvwItems.DataBind();
备注:代码不在我的脑海中,可能包含一些错误