All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
利用PHP代码实现网页自动判断转向的实例_php资料_编程技术
用PHP程序实现删除目录的三种方法实例_php资料_编程技术
利用GridView显示主细表并一次编辑明细表所有数据的例子_[Asp.Net教程]
使用AJAX技术实现网页无闪自动局部刷新_.net资料_编程技术
PHP Token(令牌)设计_[PHP教程]
实例:新手如何使用PHP创建RSS阅读器_php资料_编程技术
C#教程: 控制鼠标操作使用实例
js代码小记(判断textbox的长度,并且固定最多收入字符)_JavaScript技术_编程技术
PHP+MySQL应用中使用XOR运算加密算法_[PHP教程]
基于Eclipse开发轻量级Spring插件_[Asp.Net教程]
Reading number is top 10 pictures
英雄联盟超神十连杀截图
Men don't mature ten sign
30 beautiful school beauty6
Sell the barbecue as says father du breul1
接财神,大吉大利,财源滚滚来
中国处女图鉴2
代沟,真好
Go to the national museum2
分手的感悟
Summer is most suitable for young people to travel in China3
Download software ranking
Boxer vs Yellow5
I'm come from Beijing2
Tram sex maniac 2 (H) rar bag12
超级战舰
Unix video tutorial19
都市狐狸姑娘传
I'm come from Beijing1
Tram sex maniac 2 (H) rar bag10
Adobe Flash Player(IE) 10.0.32.18 浏览器专用的FLASH插件
I for your crazy
归海一刀 published in(发表于) 2014/1/30 0:50:31 Edit(编辑)
.net(C#)开发小技巧漫谈之三:关于在Web开发中绑定数据的三种方法_[Asp.Net教程]

.net(C#)开发小技巧漫谈之三:关于在Web开发中绑定数据的三种方法_[Asp.Net教程]

.net(C#)开发小技巧漫谈之三:关于在Web开发中绑定数据的三种方法_[Asp.Net教程]

本例完全代码下载:StrongTypeDataBinding.rar

六,关于web开发中的数据绑定

在web开发中,数据绑定是所有程序员都会遇到,并且经常处理的问题。下面就这个小问题和大家探讨一下关于强类型支持在这个问题中的应用。拙劣不当之处,敬请各路高手斧正。

先look一眼这个demo截图:
 
先简单说一下,在我们的数据库有这样一个Programmer表,它有两个字段Name和WebSite,类型都是字符串。我们要处理的问题即是,把这个表从数据库中读出来并在页面上显示。简单吧,让我们开始。
现在我们是一个新手,对.Net数据绑定一无所知,于是我到msdn2搜索了一下,找到这么一个例子:

<%@ page language="C#" %>


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


Repeater.DataSourceID Property Example




Repeater.DataSourceID Property Example


datasourceid="SqlDataSource1"
runat="server">








Product ID


Product Name








<%# Eval("ProductID") %>


<%# Eval("ProductName") %>









connectionstring="<% ConnectionStrings:NorthWindConnection%>"
selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
runat="server">






这个例子用Repeater的DataSourceID绑定SqlDataSource,简单好用,不需要写什么cs代码,把这个例子修改一下,就可以解决我们的问题。这是第一种方法。这种方法或许只在学校课堂里存在,.Net自学者怕也不屑于学它。
第二种方法。随便在google里搜索一下,发现在页面中直接绑定数据源这种方法很幼稚,在cs中绑定数据被推荐。于是我们想了想,写了如下代码用于解决问题:
页面代码:





Name:<%# DataBinder.Eval(Container.DataItem,"Name") %>

WebSite:">
<%# DataBinder.Eval(Container.DataItem,"WebSiteName") %>





--------------------------------------------




cs代码:


public partial class StrongTypeDataBinding : System.Web.UI.Page
{
private DataTable _programmerTbl;
private static object syncObj = new object();


protected void Page_Load(object sender, EventArgs e)
{
ProgrammerRepeater_2.DataSource = ProgrammerTable;
ProgrammerRepeater_2.DataBind();
}


public DataTable ProgrammerTable
{
get
{
if (null == _programmerTbl)
{
lock (syncObj)
{
if (null == _programmerTbl)
{


_programmerTbl = new DataTable();
_programmerTbl.Columns.Add("Name", typeof(string));
_programmerTbl.Columns.Add("WebSite", typeof(string));


_programmerTbl.Rows.Add("sban", "http://www.sban.com.cn/");
_programmerTbl.Rows.Add("8th pawnshop",
"http://sban.cnblogs.com/");
}
}


}


return _programmerTbl;
}
}
}


为了重点说明数据绑定,从数据库读取数据改为由代码生成数据。
这便是第二种方法,编译一下,通过,没有问题。相信98%的读者都没有发现,这个程序其实是不能正常运行的。原因在呢?
看这句:


<%# DataBinder.Eval(Container.DataItem,"WebSiteName") %>

WebSiteName这个字段其实是不存在的,但是编译器无法替我检测到这错误。这种错误,此时只能依赖于程序员的细心和严谨。但是经验告诉我们,这份依赖是不可取的。我们需要强类型支持来避免这种错误。
下面我们看第三种解决方法:
页面代码:





Name:<%# ((Sban.Lab.Programmer)Container.DataItem).Name%>

WebSite:
<%# ((Sban.Lab.Programmer)Container.DataItem).WebSite%>





--------------------------------------------




 cs代码:
public partial class StrongTypeDataBinding : System.Web.UI.Page
{
private IList _programmerList;
private static object syncObj = new object();


protected void Page_Load(object sender, EventArgs e)
{
ProgrammerRepeater_1.DataSource = ProgrammerList;
ProgrammerRepeater_1.DataBind();
}


public IList ProgrammerList
{
get
{
if (null == _programmerList)
{
lock (syncObj)
{
if (null == _programmerList)
{
_programmerList = new List();
_programmerList.Add(new Programmer { Name = "sban",
WebSite = "http://www.sban.com.cn/" });
_programmerList.Add(new Programmer { Name = "8th pawnshop",
WebSite = "http://sban.cnblogs.com/" });
}
}


}


return _programmerList;
}
}
}
public class Programmer
{
private string _name;


public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}


private string _webSite;


public string WebSite
{
get
{
return _webSite;
}
set
{
_webSite = value;
}
}


}



在数据绑定中虽然有显式类型转化,但它可以给我们提供强类型支持,是可以接受的。并且Ilist代替Table,也有更灵活的编程体验。

推荐用第三种方法绑定数据。

本例完全代码下载:StrongTypeDataBinding.rar

来源:sban's .net blog(cnblogs)







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.