在我的页面中,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”stored过程返回7行。但是datatable只显示最后一条记录。
先谢谢, 拉特南。
答案 0 :(得分:0)
看起来你正在迭代你的阅读,并在每次迭代时清理你的表。尝试使用DataAdapter
var adapter = new SqlDataAdapter(query);
adapter.Fill(dt);
答案 1 :(得分:0)
首先请写出正确/完整的代码,以便人们理解! 根据你的代码,dr是一个数据行,dr一次只包含一行, 看起来你可能已经在循环中使用了dr,所以最后它只包含最后一条记录。
所以你的数据表显示最后一条记录。!
答案 2 :(得分:0)
您正在向数据表内部循环添加行。因此,最后一个循环记录将保存在数据表中
for (int i = 0; i < gvDemoBatches.Rows.Count; i++)
{
将执行多次,你可以在其中
MySqlDataReader dr = objBLAddNewDemo.GetParticularDemoData(objBEBatch);
dt.Clear();
dt.Load(dr);
因此,数据表将仅包含gridview
的最后一行的数据cb.Checked == true)