0

我是 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>标签中检索所有这些数据。我应该如何检索和显示?

任何帮助将不胜感激。

4

2 回答 2

2

您应该使用数据绑定控件,例如 ListView 或 GridView。我建议创建一个单独的控件来保存列表中的一行,并使用 RowDataBound 方法来分配行数据。使用 ListView 的 ItemDatabound 事件的示例 - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemdatabound.aspx

附带说明一下,您的代码容易受到 SQL 注入的攻击

于 2012-04-11T12:40:38.360 回答
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();

备注:代码只是我的想法,可能包含一些错误

于 2012-04-11T12:46:31.090 回答