动态绑定ListView组件(实现局部范围的MVC)[今天过生日,今天开始上班,今天成为博客园成员]
Posted on 2007-02-25 11:17 横空 阅读(2930) 评论(14) 收藏 举报
大年初八,自己又过一年,新的一年,祝园子里面的所有人新年新气象,猪年行大运,给大家拜年了!希望以后能与大家多多交流,入园先给大家送上小小的一份礼物,“动态邦定ListView组件”。
此组件的功能就是实现实体层与界面显示(ListView)进行动态绑定,这方面的知识园子里面的高手应该都实现过。
首先大家先看看类图

具体的实现代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace Entity
{

定义相关委托定义相关委托

对象修改通知接口对象修改通知接口

包装IListElementWithEvent的DataListViewItem类包装IListElementWithEvent的DataListViewItem类

实现显示的DataListView类实现显示的DataListView类

}
只要在实体层实现IListElementWithEvent与IListWithEvent接口,然后在显示层分别根据需要定义继承DataListView与DataListViewItem的显示类就可以实现动态绑定了。
显示层代码demo如下:
public class CancelInstructionListView : DataListView
{
public CancelInstructionListView(CancelTask cancelTask)
: base(cancelTask)
{
}

protected override DataListViewItem FindViewItem(IListElementWithEvent src)
{
foreach(CancelInstructionListViewItem x in this.Items)
{
if(x.Source == src)
return x;
}
return null;
}

protected override DataListViewItem CreatItem(IListElementWithEvent src)
{
return new CancelInstructionListViewItem((CancelInstruction)src);
}
public DataListViewItem this[IListElementWithEvent src]
{
get
{
if(FindViewItem(src) != null)
return FindViewItem(src);
else
return null;
}
}
}

public class CancelInstructionListViewItem : DataListViewItem
{
public CancelInstructionListViewItem(CancelInstruction ins)
: base(ins)
{
this.source = ins;
}

CancelInstruction source;

public CancelInstruction Source
{
get
{
return source;
}
}
}
此组件的功能就是实现实体层与界面显示(ListView)进行动态绑定,这方面的知识园子里面的高手应该都实现过。
首先大家先看看类图
具体的实现代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Entity
{ 
定义相关委托定义相关委托
对象修改通知接口对象修改通知接口
包装IListElementWithEvent的DataListViewItem类包装IListElementWithEvent的DataListViewItem类
实现显示的DataListView类实现显示的DataListView类
}只要在实体层实现IListElementWithEvent与IListWithEvent接口,然后在显示层分别根据需要定义继承DataListView与DataListViewItem的显示类就可以实现动态绑定了。
显示层代码demo如下:
public class CancelInstructionListView : DataListView
{
public CancelInstructionListView(CancelTask cancelTask)
: base(cancelTask)
{
}
protected override DataListViewItem FindViewItem(IListElementWithEvent src)
{
foreach(CancelInstructionListViewItem x in this.Items)
{
if(x.Source == src)
return x;
}
return null;
}
protected override DataListViewItem CreatItem(IListElementWithEvent src)
{
return new CancelInstructionListViewItem((CancelInstruction)src);
}
public DataListViewItem this[IListElementWithEvent src]
{
get
{
if(FindViewItem(src) != null)
return FindViewItem(src);
else
return null;
}
}
}
public class CancelInstructionListViewItem : DataListViewItem
{
public CancelInstructionListViewItem(CancelInstruction ins)
: base(ins)
{
this.source = ins;
}
CancelInstruction source;
public CancelInstruction Source
{
get
{
return source;
}
}
}


浙公网安备 33010602011771号