【问题标题】:asp.net get value from List<> Methodasp.net 从 List<> 方法中获取值
【发布时间】:2018-03-30 17:29:05
【问题描述】:

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

请指导我实现我的目标。

【问题讨论】:

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


【解决方案1】:

将您的字段添加到您的 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();
}

【讨论】:

  • 我需要通过迭代List对象从代码中生成行和列,并一一保存到GridView中
  • 我不确定你的意思。那为什么不直接将列表绑定到 Grid 上呢?并按照指示添加具有相应数据字段的绑定字段。
  • 好的,我会这样做,但是如何将 List 对象数据迭代到这些列中>
  • 你不需要迭代,它会自动绑定到它。检查更新的答案。
  • 这是另一个与这里的问题无关的问题。
【解决方案2】:

您是否尝试过使用“pi”列表作为网格的数据源?

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

【讨论】:

  • 是的,这是可行的,但这是自动生成 GridView 的行和列,但我需要自己生成 GridView 的行和列
  • 您应该可以在 aspx 页面中手动定义网格列。
  • 是的,这将自动绑定,但在我的高级中,我想在 gridview 中显示该 sql 表的一些记录,这并不是我不使用自动方法的原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-10
  • 2013-02-02
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多