asp.net从List<>获取价值方法

时间:2017-10-18 18:33:01

标签: c# asp.net sql-server list gridview

我有数据访问类,其中包含List<>类型方法。其中数据完全来自SQL服务器,但我需要通过迭代List<>在我的ASP GridView中显示它。数据。这是我的数据访问层。

   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();
    }

请指导我实现我的目标。

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

您是否尝试过使用&#39; pi&#39;列出您的网格数据源?

GridView2.DataSource = pi;
GridView2.DataBind();
相关问题