繁体   English   中英

如何在gridview ASP.NET C#中显示list <>

[英]How to display list<> in gridview ASP.NET C#

我在asp.net c#中有DAL代码,用于选择DB sql服务器中table_users的所有用户。

我的DAL:

public class Users
{
    private string _UserName;

    public string UserName
    {
        get { return _UserName; }
        set { _UserName = value; }
    }
    private string _Pass;

    public string Pass
    {
        get { return _Pass; }
        set { _Pass = value; }
    }
    private string _Name;

    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }
    private string _Family;

    public string Family
    {
        get { return _Family; }
        set { _Family = value; }
    }

    private string _Mobile;

    public string Mobile
    {
        get { return _Mobile; }
        set { _Mobile = value; }
    }
}

public List<Users> GetAllUsers()
{
    List<Users> usersList = null;

    using (DataTable table = SqlDBHelper.ExecuteSelectCommand("GetAllUsers", CommandType.StoredProcedure))
    {
        if (table.Rows.Count > 0)
        {
            usersList = new List<Users>();

            foreach (DataRow row in table.Rows)
            {
                Users user = new Users();

                user.UserName = table.Rows[0]["UserName"].ToString();
                user.Pass = table.Rows[0]["Pass"].ToString();
                user.Name = table.Rows[0]["Name"].ToString();
                user.Family = table.Rows[0]["Family"].ToString();
                user.Mobile = table.Rows[0]["Mobile"].ToString();

                usersList.Add(user);
            }
        }
    }

    return usersList;
}

和我的BLL通话代码:

public List<Users> GetAllUsers()
{
    return userDB.GetAllUsers();
}

现在我想调用在网格视图中显示数据的方法。

public List<Users> usersList = null;
UsersHadler userDB = new UsersHadler();
usersList = userDB.GetAllUsers();

foreach (Users user1 in usersList)
{
    GridView1.DataSource = usersList;
    GridView1.DataBind();
}

我在base.uer1和user2和user3中有3个用户, 问题是我在gridview 3行中看到一个user1。 user1 user1 user1怎么了? 谢谢您的回复

`

摆脱foreach循环。 您将为每个用户usersList一次usersList并将整个列表绑定到GridView1 您只需要做一次。

public List<Users> usersList = null;
UsersHadler userDB = new UsersHadler();
usersList = userDB.GetAllUsers();
GridView1.DataSource = usersList;
GridView1.DataBind();

您可能还想从BLL中调用GetAllUsers方法,而不是直接在视图中从DAL中调用该方法。 否则,BLL的意义何在?

您的问题出在GetAllUsers的DAL版本中。 您仅在foreach循环中引用Rows[0]

user.UserName = table.Rows[0]["UserName"].ToString();
user.Pass = table.Rows[0]["Pass"].ToString();
user.Name = table.Rows[0]["Name"].ToString();
user.Family = table.Rows[0]["Family"].ToString();
user.Mobile = table.Rows[0]["Mobile"].ToString();

用以下代码替换GetAllUsers的DAL副本中的foreach循环:

foreach (DataRow row in table.Rows)
{
    Users user = new Users();

    user.UserName = row["UserName"].ToString();
    user.Pass = row["Pass"].ToString();
    user.Name = row["Name"].ToString();
    user.Family = row["Family"].ToString();
    user.Mobile = row["Mobile"].ToString();

    usersList.Add(user);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM