2013-04-01 44 views
0

最後一條記錄在我的網頁MySqlDataReader將返回4 records.Whenever我使用數據表只加載的MySqlDataReader將

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

數據表只顯示最後一個記錄加載此MySqlDataReader將到數據表 。

我的代碼是:

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 rows.but數據表只顯示最後一個記錄。

在此先感謝, Ratnam。

回答

0

它看起來像你迭代你的閱讀與每次迭代清空你的表。嘗試使用DataAdapter代替

var adapter = new SqlDataAdapter(query); 
adapter.Fill(dt); 
0

首先請編寫正確/完整的代碼,以便理解! 根據你的代碼,dr是一個數據行,dr一次只包含一行, 看來你可能已經在循環中使用dr了,所以最後它只包含最後一條記錄。

所以你的數據表顯示最後一條記錄。

0

您正在將數據行添加到數據表內循環中。所以,最後的循環記錄將被保存在數據表

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

將執行多次,這裏面你有

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

所以數據表將包含的數據僅用於gridview的最後一行其中cb.Checked == true)

+0

數據不在gridview中。這是在博士。我也以這種方式盤踞了,但它不起作用 – user2181075