在ASP.Net DataGrid中显示嵌套的类数据

时间:2010-09-09 16:38:13

标签: asp.net datagrid

我有一个用户对象,其中包含一些数据和其他类别的数据:

[DataContract]
    public class User
    {             
        [DataMember(Order = 0)]
        public int UserId
        {
            get; set;
        }

    public UserCredentials UserCredentials
    {
       get; set;
    }

    [DataMember(Order = 1)]
    public String SessionId { get; set; }

    [DataMember(Order = 2)]        
    public Email Email
    {
        get; set;
    }

    [DataMember(Order = 3)]
    public Password Password
    {
         get; set;
    }

    [DataMember(Order = 4)]
    public UserDetails UserDetails
    {
        get; set;
    }        

    [DataMember(Order = 5)]
    public ReferralDetails ReferralDetails
    {
         get; set;
    }

如果我在ASP.NET数据网格中显示如下列表:

List<Users> users = // get some list of users
DataGridUsers.DataSource = users;            
DataGridUsers.DataBind();

这会显示sessionId和userId但不显示其他数据字段,因为它们不是基本类型。我的解决方案是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是我提出的一个解决方案,但我不喜欢这样的事实,即如果你更改用户模型,添加一个字段或w / e你必须更新这组代码:

//......

           DataTable dt = new DataTable();

            // Add all columns needed here
            dt.Columns.Add(new DataColumn("FirstName", typeof (String)));
            // ....                

            foreach (var user in users)
            {
                DataRow dr = dt.NewRow();

                // Map all the data here
                dr["FirstName"] = user.UserDetails.FirstName;
                // ...

                dt.Rows.Add(dr);
            }

            DataGridUsers.DataSource = dt;
            DataGridUsers.DataBind();