如何在ASP.NET </div>中将DataTable值检索到<div>

时间:2012-04-11 12:34:20

标签: c# asp.net

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

任何帮助将不胜感激。

2 个答案:

答案 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();

备注:代码不在我的脑海中,可能包含一些错误