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%的读者都没有发现,这个程序其实是不能正常运行的。原因在呢?
看这句:
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
private static object syncObj = new object();
protected void Page_Load(object sender, EventArgs e)
{
ProgrammerRepeater_1.DataSource = ProgrammerList;
ProgrammerRepeater_1.DataBind();
}
public IList
{
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)