0

私のページでは、mysqlDataReader は 4 つのレコードを返します。

DataTable dt = new DataTable();
dt.Clear();
dt.Load(dr);

DataTable は最後のレコードのみを表示します。

私のコードは:

DataTable dt = new DataTable();
for (int i = 0; i < gvDemoBatches.Rows.Count; i++)
{
     CheckBox cb = (CheckBox)gvDemoBatches.Rows[i].FindControl("checkSelect");
     if (cb.Checked == true)
     {
         Panel2.Visible = true;
         objBEBatch.BatchID = Convert.ToInt32(((Label)gvDemoBatches.Rows[i].Cells[0].FindControl("lblBatchId")).Text);
          MySqlDataReader dr = objBLAddNewDemo.GetParticularDemoData(objBEBatch);
         dt.Clear();
         dt.Load(dr);
      }
 }

"GetParticularDemoData" ストアド プロシージャは 7 行を返しますが、データ テーブルには最後のレコードしか表示されません。

前もってありがとう、ラトナム。

4

3 に答える 3

0

反復ごとにテーブルをクリアして読み取りを反復しているようです。代わりに DataAdapter を使用してみてください

 var adapter = new SqlDataAdapter(query);
 adapter.Fill(dt);
于 2013-04-01T11:32:29.817 に答える
0

まず、理解できるように適切な/完全なコードを書いてください! コードによると、dr はデータ行であり、dr には一度に 1 つの行が含まれます。ループ内で dr を取得した可能性があるため、最終的には最後のレコードのみが含まれます。

したがって、データ テーブルには最後のレコードが表示されます。

于 2013-04-01T11:33:32.723 に答える
0

ループ内のデータテーブルに行を追加しています。したがって、最後のループレコードはデータテーブルに保存されます

for (int i = 0; i < gvDemoBatches.Rows.Count; i++)
{

複数回実行され、この中にあります

 MySqlDataReader dr = objBLAddNewDemo.GetParticularDemoData(objBEBatch);
 dt.Clear();
 dt.Load(dr);

gridviewしたがって、データ テーブルには、 whereの最後の行のデータのみが含まれます。cb.Checked == true)

于 2013-04-01T12:18:28.327 に答える