让你的实体字段和页面上的控件映射,自动绑定 -- ObjectBinding1.0

背景:使用asp.net开发,在编辑或新增一条记录时,你要把你的数据一个个赋值到页面上的控件去如:
Job job=.....;//获取一个Job实体
this.textbox1.Text=job.Name;
this.textbox2.Text=job.Position;
this.DropDownList1.SelectedValue=job.Grade;
....
....
由于基于bs的限制,控件不能想cs那样有(DataBindings)高级属性,于是在这种情况下,我自己封装了一个类似于中间件的控件ObjectBinding,把实体字段和页面上的控件映射,实现自动绑定。

下面就演示一下,如何在asp.net上使用:
1 首先把这控件拖拽到页面上:


2 设置ObjectBindingSourceTypeItemsMappings属性
SourceType即你的实体类型,类似与ObjectDataSource空间的TypeName,会自动加载所有的类型

ItemsMappings即建立控件与字段的映射,都只需要下拉选择一下就行

3 OK,基本的设置就这么多,现在我们在后台写些代码:
public partial class _Default : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!Page.IsPostBack)
        
{
            ObjectBinding1.DataSource 
= (new ClassLibrary.Job()).getInstance();
            ObjectBinding1.DataBind();
        }

 
    }


    
protected void Button1_Click1(object sender, EventArgs e) {
        ObjectBinding1.ControlBind();
        ClassLibrary.Job Job 
= ObjectBinding1.DataSource as ClassLibrary.Job;

        Response.Write(
"Job.ID:" + Job.ID + "--------------Job.Name:" + Job.Name);
    }

}

好了到此就能很好地显示出来了,看看效果

到此,就简单地介绍这么多,至于源码自己下载了去看吧,希望大家提些宝贵意见:)

修改: public sealed class ItemMappingCollection : System.Collections.ObjectModel.Collection<ItemMapping> 这边以前继承BindingList<ItemMapping> ,这样的话,在页面上会生一些如成itemmappings-allowedit等无用代码
源码下载
posted @ 2008-07-07 13:01 往事随锋 阅读(1505) 评论(17)  编辑 收藏 所属分类: C#ASP.NET

  回复  引用  查看    
#1楼 2008-07-07 13:27 | 巫云      
见识一下。
  回复  引用    
#2楼 2008-07-07 14:11 | anonymouses [未注册用户]
想法是不错,不过效率可能不怎么好啊。
  回复  引用  查看    
#3楼 2008-07-07 14:29 | kiler      
不错的东西。


  回复  引用    
#4楼 2008-07-07 14:59 | wxdxy [未注册用户]
好像以前的maillee做过,不过不开源
  回复  引用  查看    
#5楼 2008-07-07 15:37 | 代码乱了      
如果加上从控件的值映射到实体对象的字段上就不错了
  回复  引用  查看    
#6楼 2008-07-07 15:56 | 巫云      
@代码乱了
刚看了一遍代码,有这个功能。
  回复  引用  查看    
#7楼 2008-07-07 15:56 | 巫云      
建议在控件绑定值的时候,加个Format属性,那就更方便了。
  回复  引用  查看    
#8楼 [楼主]2008-07-07 15:59 | 往事随锋      
@巫云
这只是一个最初的版本,以后再慢慢完善吧
  回复  引用  查看    
#9楼 [楼主]2008-07-07 16:01 | 往事随锋      
@代码乱了
控件到字段以及字段到控件映射都实现了
  回复  引用  查看    
#10楼 2008-07-07 17:01 | Sam Lin      
下来研究一下,本来是想通过反射来实现这一功能的
  回复  引用  查看    
#11楼 2008-07-07 19:56 | 金色海洋(jyk)      
你的思路是

控件 —— 实体类 —— 数据库(字段)

而我的思路是

控件 —— 数据库(字段)

我觉得中间加一个实体类好像没有什么大的用处,所以我就省略实体类了。
  回复  引用  查看    
#12楼 2008-07-08 09:55 | 想爱就去爱吧      

  回复  引用    
#13楼 2008-07-08 10:33 | jean [未注册用户]
看了一下,好像itemmappings-allowedit没有效果,觉得应该在cc1:ItemMapping也能设置编辑或者只读,这样就更好了,纯属个人观点。
  回复  引用    
#14楼 2008-07-08 11:56 | actact [未注册用户]
直接用反射来完成也很方便,代码也不多,参考

http://www.cnblogs.com/snryang/archive/2008/03/22/1117974.html


  回复  引用    
#15楼 2008-07-08 17:57 | 黑鱼 [未注册用户]
太强了,强得跟个狗似的!!!
  回复  引用  查看    
#16楼 2008-07-26 10:20 | Andy Huang      
非常好的东西,可以在进一步开发,使他能在正式的环境下应用,如你现在只是单向的赋值,要做到取值,双向的
  回复  引用  查看    
#17楼 [楼主]2008-07-28 09:12 | 往事随锋      
@Andy Huang
现在就是双向的,呵呵

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
博客园首页

新闻频道

社区

小组

博问

网摘

闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-07-08 16:10 编辑过
成果网帮您增加网站收入


相关链接: