asp.net从列表<>方法得到值方法

问题描述:

我有数据访问类有列表<>类型的方法。在哪些数据完美地来自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://*.com/questions/6943680/populate- a-usercontrol-gridview-with-a-list-of-objects – DiegoS

+0

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

+1

它是Windows还是Web?请包括ASPX如果任何.. – Coding

您是否尝试过使用'pi'List作为您的网格的数据源?

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

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

+0

您应该能够手动定义网格列aspx页面 asp:GridView> – therea1wags

+0

是的,这将自动绑定,但在我的高级我想在gridview中显示该sql表的一些记录不是所有这就是为什么我不使用自动方法 –

添加你的字段到网格在你的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 对象数据到这个列> –