0

在我的页面中,mysqlDataReader 返回 4 条记录。每当我将此 mysqlDataReader 加载到 DataTable 时,使用

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

首先请编写正确/完整的代码,以便人们理解!根据您的代码, dr 是一个数据行,并且 dr 一次将包含一行,看来您可能已经将 dr 循环了,所以最后它只包含最后一条记录。

所以你的数据表显示最后一条记录。!

于 2013-04-01T11:33:32.723 回答
0

看起来您正在通过在每次迭代中清除表格来迭代您的阅读。尝试改用 DataAdapter

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

您正在循环内向数据表添加行。所以最后一个循环记录将保存在数据表中

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

将执行多次,在这里面你有

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

因此数据表将仅包含gridviewwhere的最后一行的数据cb.Checked == true)

于 2013-04-01T12:18:28.327 回答