一个简单的Spring.net绑定例子
2007-10-19 15:46
483 查看
下午的时候碰到一个需求,同事需要根据数据库里的表,自动在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); }
}
}
为了支持双向绑定,用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); }
}
}
相关文章推荐
- ADO.NET Entity Framework 一个简单数据绑定例子
- ADO.NET Entity Framework 一个简单数据绑定例子
- ADO.NET Entity Framework 一个简单数据绑定例子
- spring拦截器的一个简单例子
- ASP.NET中的WebService一个简单的例子
- Spring基础——一个简单的例子
- 一个简单的Spring的AOP的例子
- 在ASP.NET MVC 中,一个简单的例子让 URL 请求的 controller 和 action 小写
- 一个简单的Spring实现的例子
- spring的springMVC的一个简单的例子
- asp.net AutoCompleteExtender的一个简单例子代码
- SpringBoot专题(1) 一个的简单的SpringBoot例子
- 一个简单了解spring的例子
- spring task 入门 简单的一个例子
- 一个简单的C#多线程间同步的例子 from 小菜鸟之家~ASP.NET 入门中
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之八:一个简单例子演示Spring-MVC中多种参数传递方式
- Spring-Context之一:一个简单的例子
- Spring入门(一个简单的例子)
- 数据绑定(一)一个简单的例子
- Spring MVC + Mybatis 一个简单的例子 — 返回Json数据