一个简单的Spring.net绑定例子

本文介绍如何使用Spring.Net的BaseBindingManager实现动态添加的TextBox控件与数据源的双向绑定。通过自定义属性访问器,使得动态控件能够被绑定表达式识别,完成从数据库加载数据到控件显示,以及将控件输入保存回数据库的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下午的时候碰到一个需求,同事需要根据数据库里的表,自动在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, 
thisnull);
        }
    }

    
public Control this[string name] 
    { 
        
get { return this.FindControl(name); } 
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值