0

私はasp.netの初心者です。asp.netのドロップダウンリストにデータを入力するという点で、より適切なものは何ですか? データソースを使用するか、sqldatareader と for ループを使用します。

私は sqldatareader と for ループを使用しています。サンプル コードは次のとおりです。

For i = 1 To 20
            etc.CommandText = "select Classification from schemaItemDetails.AssetClassification where AC_ID = " & i & ""
            Dim dr As SqlDataReader = etc.ExecuteReader
            While (dr.Read())
                ddoneclassification.Items.Add(dr.GetString(0))
            End While
            dr.Close()
        Next

sqldatasource とこれを使用することに違いはありますか?? ドロップダウンの入力に sqldatasource を使用することはありません。

4

4 に答える 4

1

私の観点からすると、最も簡単で最善の解決策は、DropDownList の DataSource プロパティを設定することです。この場合、必要なすべてのジョブは舞台裏で行われ、db サーバーと web サーバー間の同期データについて考える必要はありません。

また、もし私があなたなら、SQL を変更して、単一のリクエストのみが DB サーバーに送信されるようにします。つまり、

"select Classification from schemaItemDetails.AssetClassification where AC_ID between 1 and 20"
于 2013-02-06T06:08:15.043 に答える
0

これはあなたのものとほとんど同じですが、「while」ループが削除され、より多くの結果を返すクエリに置き換えられています。Read() メソッドは、呼び出されるたびにインデックスをインクリメントします。つまり、ループ チェックが行われるたびに、元のコードはほとんど問題ありませんでした。

データバインディングは別のオプションですが、これは確かに有効です。もちろん「間違い」とは思いません。

etc.CommandText = "select Classification from schemaItemDetails.AssetClassification where AC_ID between 1 and 20"
Dim dr As SqlDataReader = etc.ExecuteReader
While (dr.Read())
    ddoneclassification.Items.Add(dr.GetString(0))
End While
dr.Close()

注意点: データベースによって「BETWEEN」の処理方法が異なるため、自分のデータベースがどのように処理するかを確認してください。where AC_ID>= 1 and AC_ID>=20データベースに含まれる/除外される境界に応じて、を使用する必要がある場合があります。

詳細については、このページの下部をご覧ください。

于 2013-02-06T06:21:34.873 に答える
0

ループを実行する代わりに、クエリ ( SELECT TOP 20 ID,Name from YourTable WHERE ..) で 20 項目を取得し、それをドロップダウン コントロールにバインドします。

ddoneclassification.DataSource=dr
ddoneclassification.DataTextField="Name"  
ddoneclassification.DataValueField="ID"
ddoneclassification.DataBind()

クエリの結果セットに Name と ID という 2 つのフィールドがあるとします。

于 2013-02-06T06:12:49.433 に答える
0

ドロップダウンリストにデータを入力するには、データソースを使用する必要があると思います。ドロップダウン リストのデータ ソースを選択して構成するだけです。Sqldatareader は基本的に順方向のみの順次的な方法でデータを読み取るために使用されますが、データソースはデータベースと Web ページ間の接続を確立するために使用されます。

このビデオをご覧ください: http://www.youtube.com/watch?v=sOE_hA2NLBI

于 2013-02-06T06:47:06.703 に答える