2017-10-18 80 views
2

我有數據訪問類有列表<>類型的方法。在哪些數據完美地來自SQL服務器,但我需要通過迭代列表<>數據在我的ASP GridView中顯示它。這是我的數據訪問層。asp.net從列表<>方法得到值方法

public class AdminPanelDataAccessLayer 
{ 
    public List<PersonalInformation> GetAllPersonalInfo() 
    { 
     List<PersonalInformation> listsPersonalInfo = new List<PersonalInformation>(); 
     string connString = ConfigurationManager.ConnectionStrings["HRMS"].ConnectionString; 
     using (SqlConnection conn = new SqlConnection(connString)) 
     { 
      SqlCommand cmd = new SqlCommand("usp_GetApplicantCNICAndName", conn); 
      cmd.CommandType = CommandType.StoredProcedure; 
      conn.Open(); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       PersonalInformation pi = new PersonalInformation(); 
       pi.CNIC = reader["CNIC"].ToString(); 
       pi.Name = reader["Name"].ToString(); 


       listsPersonalInfo.Add(pi); 

      } 
      return listsPersonalInfo; 

     } 
    } 
} 

這是通過迭代在GridView中顯示數據的方法。

 private void GetAllData() 
    { 
     AdminPanelDataAccessLayer apdal = new AdminPanelDataAccessLayer(); 
     List<PersonalInformation> pi = apdal.GetAllPersonalInfo(); 

     DataTable dt = new DataTable(); 
     DataRow dr = null; 
     dt.Columns.Add(new DataColumn("CNIC", typeof(string))); 
     dt.Columns.Add(new DataColumn("Name", typeof(string))); 

     foreach (object item in pi) 
     { 
      dr = dt.NewRow(); 
      dr["CNIC"] = pi.Select(o => o.CNIC); 
      dr["Name"] = pi.Select(o => o.Name); 
      dt.Rows.Add(dr); 
     } 

     ViewState["CurrentTable"] = dt; 

     GridView2.DataSource = dt; 
     GridView2.DataBind(); 
    } 

請指導我實現我的目標。

+0

可能重複https://stackoverflow.com/questions/6943680/populate- a-usercontrol-gridview-with-a-list-of-objects – DiegoS

+0

[用對象列表填充UserControl GridView]的可能重複(https://stackoverflow.com/questions/6943680/populate-a-usercontrol-gridview -with-a-list-of-objects) – DiegoS

+1

它是Windows還是Web?請包括ASPX如果任何.. – Coding

回答

0

您是否嘗試過使用'pi'List作爲您的網格的數據源?

GridView2.DataSource = pi; 
GridView2.DataBind(); 
+0

是的這是工作,但這是自動生成GridView的行和列,但我需要生成我自己的GridView的行和列 –

+0

您應該能夠手動定義網格列aspx頁面 therea1wags

+0

是的,這將自動綁定,但在我的高級我想在gridview中顯示該sql表的一些記錄不是所有這就是爲什麼我不使用自動方法 –

4

添加你的字段到網格在你的ASPX:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false"> 
    <asp:BoundField DataField="CNIC" /> 
    <asp:BoundField DataField="Name" /> 
</asp:GridView> 

後面的代碼:

private void GetAllData() 
{ 
    AdminPanelDataAccessLayer apdal = new AdminPanelDataAccessLayer(); 
    List<PersonalInformation> pi = apdal.GetAllPersonalInfo(); 

    //remove any records here, i am just removing first element here 
    if (pi.Count > 0) 
     pi.RemoveAt(0); 

    GridView2.DataSource = pi ; 
    GridView2.DataBind(); 
} 
+0

我需要生成行和列從代碼迭代List <>對象並將其保存到GridView中一個接一個 –

+0

我不確定你是什麼意思。那麼爲什麼不直接將列表綁定到網格?並按指示添加帶有相應數據字段的綁定字段。 – Coding

+0

好吧我會這樣做,但如何迭代List <>對象數據到這個列> –

相關問題