博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单的Spring.net绑定例子
阅读量:5032 次
发布时间:2019-06-12

本文共 1453 字,大约阅读时间需要 4 分钟。

下午的时候碰到一个需求,同事需要根据数据库里的表,自动在Aspx Page上添加相应的TextBox控件,并将值绑定到TextBox文本框上,同样的,在保存时也希望能保存回数据库。
为了支持双向绑定,用Spring.net的
Spring.DataBinding.BaseBindingManager来做是个简单的方法,碰到的问题是:Spring.net的绑定表达式是基于属性的,而动态加入的txtName, txtAge是无法通过"Page.txtName", "Page.txtAge"来访问的,即我们动态加入的控件被放到了Page.Form.Controls里了。
解决的办法很简单,为页面加入this["name"]方式的属性访问器:
 public Control this[string name]
 {
  get { return this.FindControl(name); } 
  }
在绑定表达式只要这样写即可:['name'].Text ,由此把动态加入的控件看着Page的this["name"]属性。
完整的例子代码如下:
using
 System;
using
 System.Data;
using
 System.Configuration;
using
 System.Collections;
using
 System.Web;
using
 System.Web.Security;
using
 System.Web.UI;
using
 System.Web.UI.WebControls;
using
 System.Web.UI.WebControls.WebParts;
using
 System.Web.UI.HtmlControls;
using
 Spring.DataBinding;
public
 
class
 People
{
    
string
 name;
    
public
 
string
 Name
    {
        
get
 { 
return
 name; }
        
set
 { name 
=
 value; }
    }
}
public
 partial 
class
 PollutionManage_Spring : System.Web.UI.Page
{
    
protected
 
void
 Page_Load(
object
 sender, EventArgs e)
    {
        
if
 (
!
IsPostBack)
        {
            BaseBindingManager manager 
=
 
new
 BaseBindingManager();
            TextBox box 
=
 
new
 TextBox();
            box.Text 
=
 
"
hello
"
;
            box.ID 
=
 
"
hi
"
;
            
this
.Form.Controls.Add(box);
            People p 
=
 
new
 People();
            p.Name 
=
 
"
jiyang
"
;
            manager.AddBinding(
"
Name
"
"
['hi'].Text
"
);
            manager.BindSourceToTarget(p, 
this
null
);
        }
    }
    
public
 Control 
this
[
string
 name] 
    { 
        
get
 { 
return
 
this
.FindControl(name); } 
    }
}

转载于:https://www.cnblogs.com/jiyang/archive/2007/10/19/930609.html

你可能感兴趣的文章
每日一句(2014-9-17)
查看>>
初学Hadoop之单机模式环境搭建
查看>>
[Ubuntu] 关于使用 root 账号登录
查看>>
不要做沙和尚
查看>>
二维数组指针作为函数参数传递
查看>>
Mobile里实现Linear Rendering
查看>>
[PKU1679 The Unique MST]
查看>>
JavaScript 变量提升
查看>>
python 装饰器
查看>>
STM8 中I2C读写函数。
查看>>
微信收藏导出到PC端的方法,不要再傻傻的用网页版转换了!
查看>>
初识正则表达式
查看>>
Openstack(八)部署镜像服务glance
查看>>
构造者模式
查看>>
栈---面试知识点整理
查看>>
DataGridViewRow的DataBoundItem属性
查看>>
Weka开发[3]-Evaluation类
查看>>
调用webservice进行身份验证
查看>>
[模板]树链剖分
查看>>
Python之克隆
查看>>