2017-05-29 112 views
2

我的要求是,我希望所有从数据库中的数据应该绑定到 网格视图不更新网格视图数据源....GridView的数据源更新

这里是我的代码: -

public void BindAll(GridView grd) 
     { 
      List<int> id = new List<int>(); 
      SqlCommand cmd =new SqlCommand("Select SiteId from SiteMaster",con); 

      con.Open(); 
      SqlDataReader dr =cmd.ExecuteReader(); 
      while (dr.Read()) 
      { 
       id.Add(Convert.ToInt16(dr["SiteId"])); 

      } 
      dr.Close(); 
      foreach (int k in id) 
      { 
      List<Errorlog> lst = new List<Errorlog>(); 
      DynamicParameters param = new DynamicParameters(); 
      param.Add("SiteId",k, DbType.Int16); 
      lst = con.Query<Errorlog>("Usp_Temp", param, null, true, 200, CommandType.StoredProcedure).ToList(); 
      if (lst.Count != 0) 
      { 

       grd.DataSource = lst; //here it display only those record which are last updated.I am binding data from multiple table .it only display last table data.I want all the data from all the table should be display. 
       grd.DataBind(); 
      } 


      } 

     } 
+0

我不想更新lst只打一次电话:清单 lst =新清单();每次删除旧数据时都会创建一个新列表。另外当更新设置数据源为空时:grd.DataSource = null; grd.DataSource = lst; – jdweng

回答

2
List<Errorlog> lst = new List<Errorlog>(); // create list 
// loop and add items to above list as below 
foreach (int k in id) 
{ 
    DynamicParameters param = new DynamicParameters(); 
    param.Add("SiteId",k, DbType.Int16); 
    List<Errorlog> temp= con.Query<Errorlog>("Usp_Temp", param, null, true, 200, CommandType.StoredProcedure).ToList(); 
    //add to main list 
    lst .AddRange(temp); 

} 
//finally show all the data 
if (lst.Count != 0) 
{ 
    grd.DataSource = lst; 
    grd.DataBind(); 
} 
+0

感谢您的解决方案 – Hinal

0

尝试:

SqlCommand cmd =new SqlCommand("Select * from SiteMaster",con); 

我已经改变了SQL查询