对象中包含对象的转化
有一个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的内容我也不得而知,凭着对开发的想法我觉得这是一种好的实现