开发者

Displaying Nested Class Data in an ASP.Net DataGrid

开发者 https://www.devze.com 2023-01-15 18:01 出处:网络
I have a user object which consist of some data and other classes of data: [DataContract] public class User

I have a user object which consist of some data and other classes of data:

[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;
    }

If i display a list of this in ASP.NET datagrid as follows:

List<U开发者_运维知识库sers> users = // get some list of users
DataGridUsers.DataSource = users;            
DataGridUsers.DataBind();

This displays sessionId and userId but no other data fields because they are not basic types. What is my solution?

Thanks!


Here is one solution I came up with but I don't like the fact that if you change the User model, add a field or w/e you have to then update this set of code:

//......

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

精彩评论

暂无评论...
验证码 换一张
取 消