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などのデータバインドされたコントロールを使用する必要があります。リスト内の1つの行を保持する別のコントロールを作成し、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 に答える