DataList的自定义模版列绑定及Container
2005-10-27 13:58 Bluetooth 阅读(771) 评论(0) 编辑 收藏 举报
使用datalist可以灵活的定义你的数据展示,它比datagrid有着更好的灵活性。比如,我们定义了一个datalist,在page_load()事件中取出数据,绑定datalist,一切与datagrid无异。
这里注意的是:<%%>与<%#%>的区别,看上面我们可以发现,前者是全局引用,而后者,仅仅在databind()发生后才编译代码,这是两者的区别。
同样注意的是Container.DataItem,它据说是指的局部变量的引用,datarowview ?我想我没有弄清楚它到底是怎么回事的引用。
但是结果,是我们所想要的。很好。
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
System.Data.SqlClient.SqlConnection con=new System.Data.SqlClient.SqlConnection("data source=(local);user id=sa;database=pubs");
System.Data.SqlClient.SqlCommand sqlcom=new System.Data.SqlClient.SqlCommand("select * from titles",con);
sqlcom.Connection.Open();
System.Data.SqlClient.SqlDataReader sqlreader=sqlcom.ExecuteReader();
this.DataList1.DataSource=sqlreader;
this.DataList1.DataBind();
sqlcom.Connection.Close();
}
下面,重要的是,如何编辑定义你的datalist样式,比如,要定义几列格式一样的数据展示,我们可以定义datalist的RepeatColumns属性。技巧同编写所有的web窗体一样,请在itemtemplate里面嵌套一个table.比如下面这样:{
// 在此处放置用户代码以初始化页面
System.Data.SqlClient.SqlConnection con=new System.Data.SqlClient.SqlConnection("data source=(local);user id=sa;database=pubs");
System.Data.SqlClient.SqlCommand sqlcom=new System.Data.SqlClient.SqlCommand("select * from titles",con);
sqlcom.Connection.Open();
System.Data.SqlClient.SqlDataReader sqlreader=sqlcom.ExecuteReader();
this.DataList1.DataSource=sqlreader;
this.DataList1.DataBind();
sqlcom.Connection.Close();
}
<asp:datalist id="DataList1" runat="server" RepeatColumns="3">
<ItemTemplate>
<TABLE style="FONT: 10.5pt 宋体" cellPadding="10">
<TR>
<TD width="1" bgColor="#bd8672">
<TD vAlign="top"><IMG src="aspplus/cale.gif" align="top">
</TD>
<TD vAlign="top"><B>书名:</B><%# DataBinder.Eval(Container.DataItem,"Title")%><BR>
<B>价格:</B><%# DataBinder.Eval(Container.DataItem,"Price")%><BR>
</TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:datalist></FONT></form>
虽然我们紧紧写了一个模版列的代码,数据查询后所对应的所有的行,都将一一显示出来。<ItemTemplate>
<TABLE style="FONT: 10.5pt 宋体" cellPadding="10">
<TR>
<TD width="1" bgColor="#bd8672">
<TD vAlign="top"><IMG src="aspplus/cale.gif" align="top">
</TD>
<TD vAlign="top"><B>书名:</B><%# DataBinder.Eval(Container.DataItem,"Title")%><BR>
<B>价格:</B><%# DataBinder.Eval(Container.DataItem,"Price")%><BR>
</TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:datalist></FONT></form>
这里注意的是:<%%>与<%#%>的区别,看上面我们可以发现,前者是全局引用,而后者,仅仅在databind()发生后才编译代码,这是两者的区别。
同样注意的是Container.DataItem,它据说是指的局部变量的引用,datarowview ?我想我没有弄清楚它到底是怎么回事的引用。
但是结果,是我们所想要的。很好。