1

私は初心者です。

DataReaderは順方向のみ読み取り専用で動作し、一度に1つのレコードを読み取ると聞きました。次のコードを実行するとします。

SqlDataReader reader=cmd.ExecuteReader();
gv1.DataSource=reader;
gv.DataBind();

グリッドビューはどのようにすべてのレコードにデータを入力しますか?リーダーは読み取りごとに1行を読み取ることができるため、グリッドビューで表示できるのは最後の行だけだと思いました。

4

3 に答える 3

0

内部的には、DataReaderのRead()メソッドは、false(レコードがもうないことを示す)を返すまで、DataBinding中に呼び出されます。各レコードがフェッチされると、レンダリングされるhtmlに追加されます。

于 2010-01-03T09:56:18.717 に答える
0

MSDNによると:

GridViewコントロールは、データソースコントロール(SqlDataSource、ObjectDataSourceなど)、およびSystem.Collections.IEnumerableインターフェイスを実装する任意のデータソース(System.Data.DataView、System.Collectionsなど)にバインドできます。 .ArrayList、またはSystem.Collections.Hashtable)。次のいずれかの方法を使用して、GridViewコントロールを適切なデータソースタイプにバインドします。

ご覧のとおり、 SqlDataReader参照をGridView.DataSourceに設定しているだけです。GridView.DataBindメソッドを呼び出すと、GridViewは while(reader.Read())によってそれを読み取り、対応するデータを入力します。

于 2010-01-03T10:03:31.417 に答える
-1

BindDataリーダーから一度に1レコードずつデータを読み取り、GridViewにデータを入力します。GridViewは、リーダーを介したサーバーへの接続を維持しません。

于 2010-01-03T09:55:01.160 に答える