首页
最近更新
热门教程
ASP.NET
开发语言
开发环境
AJax教程
控件开发
统计报表
数据库
Web服务
安装部署
HTML教程
Javascript
XML教程
Community Server
NHibernate
书籍推荐
常用工具
实用代码
教程全文搜索
首页
>>
ASP.NET
如此自动绑定数据到WebUI
添加人:
iyond
添加时间:2007-04-09 阅读次数:1017
收藏此教程
把数据绑定到控件,不知道大家用哪种方法?
很早之前,我一般在aspx中放置控件,在后台的代码中用代码直接给相应的控件设置属性的值。这样的方法优点是灵活,可以依据业务逻辑,灵活的设置控件的Text以及Visible。示例如下:
<
table
>
<
tr
>
<
td
>
用户名
</
td
>
<
td
>
<
asp:TextBox
ID
="tbName"
runat
="server"
></
asp:TextBox
>
</
td
>
</
tr
>
</
table
>
然后后台里写代码:
protected
User OperData
{
get
;
set
;
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(
!
Page.IsPostBack)
{
this
.tbName.Text
=
OperData.Name;
}
}
不久之前,我发现在写好多字段的如果都这样写的话,会很累的,虽然效率会很高。所以我尝试采用如下的方式:
尽可以的避免在代码中直接写来给控件属性设置值,而通过前台的绑定来实现,如:
<
asp:TextBox
ID
="TextBox1"
runat
="server"
Text
='<%#OperData.Name
%
>
'>
</
asp:TextBox
>
不过,这样的话,在后台也应该至少有一句绑定操作,像这样:
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(
!
Page.IsPostBack)
{
this
.DataBind();
}
}
虽然绑定上了,但这里有一个问题,我们的页面上的控件,不是都是在 !Page.IsPostBack这个条件的时候要绑定,也许还要有别的要求。还有,既然已经Page.IsPostBack也是条件,我们要是不用在后台代码里写this.DataBind不是更好吗?
其实,说难也不难,我们来实现一个控件,这个控件用来自动绑定,且分条件的绑定。下面看下代码:
namespace
Iyond.Web.UI.WebControls
{
public
class
NullPanel : Panel
{
private
bool
_autoBind
=
true
;
public
override
void
RenderBeginTag(System.Web.UI.HtmlTextWriter writer)
{
//
因为NULL吗,所以什么也不输出
//
base.RenderBeginTag(writer);
}
public
override
void
RenderEndTag(System.Web.UI.HtmlTextWriter writer)
{
//
因为NULL吗,所以什么也不输出
//
base.RenderEndTag(writer);
}
protected
override
System.Web.UI.HtmlTextWriterTag TagKey
{
get
{
return
System.Web.UI.HtmlTextWriterTag.Unknown;
}
}
[DefaultValue(
true
)]
public
bool
AutoBind
{
get
{
return
_autoBind;
}
set
{
_autoBind
=
value;
}
}
protected
override
void
OnLoad(EventArgs e)
{
base
.OnLoad(e);
//
重置显示属性,好引发 OnPreRender
this
.Visible
=
true
;
}
protected
override
void
DataBindChildren()
{
//
分条件绑定子控件,条件就是:
if
(
this
.Visible
&&
this
.AutoBind)
{
base
.DataBindChildren();
}
}
protected
override
void
OnPreRender(EventArgs e)
{
//
在这里,我们要给数据绑定数据,不知道这个位置是不是最好
if
(
this
.AutoBind)
{
this
.DataBind();
}
base
.OnPreRender(e);
}
}
}
有了上面这个控件,我现在可以像下面一样写代码:
<
asp:NullPanel
ID
="panelFenInfo"
runat
="server"
Visible
='<%#this.IsEditMode%
>
' >
<
asp:TextBox
ID
="tbName"
runat
="server"
Text
='<%#this.OperData.Name
%
>
'>
</
asp:TextBox
>
<
asp:NullPanel
>
<
asp:NullPanel
ID
="panelInfo"
runat
="server"
Visible
='<%#!Page.IsPostBack%
>
' >
<
asp:TextBox
ID
="tbCompany"
runat
="server"
Text
='<%#this.OperData.Name
%
>
'>
</
asp:TextBox
>
<
asp:NullPanel
>
后台代码,这时就不用写了。
写到这里,不知道大家看明白没有,我的文笔可真差,希望大家多在评论中指出。
共
1
页 第
1
页
上一页
1
下一页
相关的教程:
数据绑定
收藏此教程
Currently.-0.05/5
-5
-4
-3
-2
-1
0
1
2
3
4
5
当前平均分:
0.0
(
0
次打分)
-5
-4
-3
-2
-1
0
1
2
3
4
5
推荐阅读
Bind和Eval的区别详解
详述ASP.Net2.0 数据绑定控件的优越性
详述ASP.Net2.0 数据绑定控件的优越性
Bind和Eval的区别详解
添加评论
评论主题
您的大名
您的评论
验证码
评论列表
ASP.NET论坛
|
网站帮助
|
加入收藏
知识库搜索:
用户信息
欢迎您,游客。
登录
|
注册
为什么要注册?
马上加入GotAspx,建立自己的知识库,与大家分享您的知识库,还可获得丰厚积分奖励!
本类热门
从零开始学ASP.NET(基础篇)
ASP.NET 2.0轻松实现数据库应用开发
ASP.NET 程序中常用的三十三种代码
GridView 72般绝技(一)
对初学者的建议:ASP.NET技术的学习顺序
单点登录在ASP.NET上的简单实现
ASP.NET数据库编程快速入门之技术慨述
ASP.NET 2.0中构造个性化网页
本类最新
介绍SubSonic【转】
ASP.NET访问XML的例子
WEB开发者版本级别
基于.NET2.0的System.Net.Mail发送邮件Demo
Asp.Net 文件操作基类(读取,删除,批量拷贝,批量删除,写入)
c#生成与 追加xml
一个复杂的Eval()绑定
将服务器上的一个.doc文档另存为到客户端