首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

对象中包含对象的转化,该怎么处理

2012-03-02 
对象中包含对象的转化有一个jobs类publicclassjobs{publicjobs(){}privateint_job_idprivatestring_job_d

对象中包含对象的转化
有一个jobs类  
public   class   jobs
        {
                public   jobs()
                {   }
                private   int   _job_id;
                private   string   _job_desc;
                private   int   _min_lvl;
                private   int   _max_lvl;
           
                public   int   job_id
                {
                        set   {   _job_id   =   value;   }
                        get   {   return   _job_id;   }
                }
       
                public   string   job_desc
                {
                        set   {   _job_desc   =   value;   }
                        get   {   return   _job_desc;   }
                }
           
                public   int   min_lvl
                {
                        set   {   _min_lvl   =   value;   }
                        get   {   return   _min_lvl;   }
                }
       
                public   int   max_lvl
                {
                        set   {   _max_lvl   =   value;   }
                        get   {   return   _max_lvl;   }
                }
        }
还有一个person类
        public   class   person
        {
                private   string   _name;
                private   int   _id;
                private   jobs   _workjob;
                public   int   ID
                {
                        set
                        {
                                _id   =   value;


                        }
                        get
                        {
                                return   _id;
                        }
                }

                public   string   Name
                {
                        set
                        {
                                _name   =   value;
                        }
                        get
                        {
                                return   _name;
                        }
                }

                public   jobs   WorkJob
                {
                        set
                        {
                                _workjob   =   value;
                        }
                        get
                        {
                                return   _workjob;
                        }
                }
        };
--------
jobs   jobs1   =   new   jobs();
                        jobs1.job_id   =   1;
                        jobs1.min_lvl   =   10;
                        jobs1.max_lvl   =   10;
                        jobs1.job_desc   =   "New   Hire   -   Job   not   specified ";

                        jobs   jobs2   =   new   jobs();
                        jobs2.job_id   =   1;


                        jobs2.min_lvl   =   200;
                        jobs2.max_lvl   =   250;
                        jobs2.job_desc   =   "Chief   Executive   Officer ";

                        person   p1   =   new   person();
                        p1.ID   =   1;
                        p1.Name   =   "p1 ";
                        p1.WorkJob   =   jobs1;

                        person   p2   =   new   person();
                        p2.ID   =   2;
                        p2.Name   =   "p2 ";
                        p2.WorkJob   =   jobs2;

                        person[]   personArray   ={p1,p2};
我现在要将personArray   的转换成DataTable或者DataSet,请有什么方法!因为我将数据绑定到GRID控件!或者有什么办法让数据源支持对象化!

[解决办法]
好像3。0的东西了。。。。。
不敢发言了
[解决办法]
因为DataTable是数据对象,而PersonArray是一个类的数组,不好处理。
[解决办法]
倒不如这样,把Grid控件换成像ListView这种的非绑定方法的控件,使用数组中的每一个Person对象做为一个ListViewItem处理,Person的属性可以使用ListViewItem的子项,文本可以使用Person的名称等。这样就可以把数组里的Person利用Listview展示出来,编辑ListViewItem的时候把相应的属性值同时改到相应的Person的属性里。
[解决办法]
对象是你们进行封装的吗?如果是,就比较好办,但是也比较麻烦。
你可以重写每个类的ToString方法,如果要表示这个类,就使用ToString()来返回一个值表示。

public class Jobs
{
public override ToString()
{
// 重写ToString()方法
}
}

public class Person
{
private Jobs _workjob;

public Jobs WorkJob
{
get {return _workjob;}
set {_workjob = value;}
}

public override ToString()
{
// 重写ToString()方法
}

public DataSet GetDataSet()
{
// 这里将属性逐个加入DataSet中,如果是对象,则使用ToString()来取值
}

public void GetDataSet(DataSet ds)
{
}
[解决办法]
public DataSet GetDataSet()
{
// 这里将属性逐个加入DataSet中,如果是对象,则使用ToString()来取值
string workjobobj = _workjob.ToString(); // 这样就变成可以插入DataSet的值了
}
[解决办法]
自己写Adapter!
[解决办法]
每一个对象,或者其本身,或者其基类,都从一个Interface继承。
public interface IObjectIdentity
{
public string ID
{
get;
}
}

public class Jobs : IObjectIdentity
{
private string jobid;
public string JobId
{
get {return jobid;}
set {jobid = value;}
public string ID
{
get {return jobid;}


}
}
}

然后对于每个对象,要取具体值的时候,就用
Jobs job = new Jobs();
IObjectIdentity ijob = job;
ijob.ID // <--这个就是代表这个类的值
[解决办法]
hbxtlhx(平民百姓-自已动手,丰衣足食) 说的:
倒不如这样,把Grid控件换成像ListView这种的非绑定方法的控件,使用数组中的每一个Person对象做为一个ListViewItem处理,Person的属性可以使用ListViewItem的子项,文本可以使用Person的名称等。这样就可以把数组里的Person利用Listview展示出来,编辑ListViewItem的时候把相应的属性值同时改到相应的Person的属性里。


是一个好方法。另外你的类设计的时候可以ezhuyin(碧海蓝天)的设计思路

就是在类里面封装一个方法,可以直接转换为Dataset对象

至于是否3.0的内容我也不得而知,凭着对开发的想法我觉得这是一种好的实现

热点排行