|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
那做企业软件是不是最好用J2EE?控件|数据|显现简介
本文形貌怎样利用嵌套的Repeater控件来显现分级数据。固然了,你也能够将这一手艺使用到其他的列表绑定控件上往,好比DataGrid包括DataGrid,DataList包括DataList等等的组合。
绑定到父表
1.增加一个新的WebForm到使用程序项目中,称号为Nestedrepeater.ASPx.
2.从工具箱托动一个Repeater控件到这个页面上,设定其ID属性为parent.
3.切换到HTML视图.
4.选中以下<itemtemplate>代码,复制到Repeater控件对应的地位。注重,粘贴的时分请利用“粘贴为html”功效。这些语句包括了数据绑定语法,很复杂。
<itemtemplate>
<b><%#DataBinder.Eval(Container.DataItem,"au_id")%></b><br>
</itemtemplate>
5.翻开Nestedrepeater.aspx.cs这个代码分别文件。降以下代码增加到Page_Load事务中,其感化是创建一个到Pubs(这个数据库是SQLServer的演示数据库。别的在安装.netFrameworksdk的时分也会安装这个数据库)数据库的毗连,并绑定Authors表到Repeater控件
publicvoidPage_Load()
{
SqlConnectioncnn=newSqlConnection("server=(local);database=pubs;uid=sa;pwd=;");
SqlDataAdaptercmd1=newSqlDataAdapter("select*fromauthors",cnn);
DataSetds=newDataSet();
cmd1.Fill(ds,"authors");
//这里将要拔出子表的数据绑定
parent.DataSource=ds.Tables["authors"];
Page.DataBind();
cnn.Close();
}
6.在文件的头部增加上面的称号空间
usingSystem.Data.SqlClient;
7.依据你本人的情形修正一下毗连字符串
8.保留并编译使用程序
9.在扫瞄器中翻开这个页面,输入了局相似于上面的格局
172-32-1176
213-46-8915
238-95-7766
267-41-2394
...
绑定到子表
1.在页面的HTML视图中,增加以下代码。其目标是增添子Repeater控件到父Repeater的项目模板中,构成嵌套。
<asp:repeaterid="child"runat="server">
<itemtemplate>
<%#DataBinder.Eval(Container.DataItem,"["title_id"]")%><br>
</itemtemplate>
</asp:repeater>
2.设置子Repeater控件的DataSource属性:
<asp:repeater...datasource=<%#((DataRowView)Container.DataItem)
.Row.GetChildRows("myrelation")%>>
3.在页面顶部增加以下指令(请注重,是在.aspx文件中):
<%@ImportNamespace="System.Data"%>
在.cs文件中,将Page_Load中的正文部分(//这里将要拔出子表的数据绑定)交换成以下代码:
SqlDataAdaptercmd2=newSqlDataAdapter("select*fromtitleauthor",cnn);
cmd2.Fill(ds,"titles");
ds.Relations.Add("myrelation",
ds.Tables["authors"].Columns["au_id"],
ds.Tables["titles"].Columns["au_id"]);
4.保留并编译使用程序。
.在扫瞄器中观察修正后的页面。显现格局相似于上面的格局:
172-32-1176
PS3333
213-46-8915
BU1032
BU2075
238-95-7766
PC1035
267-41-2394
BU1111
TC7777
...
完全的代码
Nestedrepeater.aspx
<%@PageLanguage=C#Inherits="yourprojectname.nestedrepeater"%>
<%@ImportNamespace="System.Data"%>
<html>
<body>
<formrunat=server>
<!--startparentrepeater-->
<asp:repeaterid="parent"runat="server">
<itemtemplate>
<b><%#DataBinder.Eval(Container.DataItem,"au_id")%></b><br>
<!--startchildrepeater-->
<asp:repeaterid="child"datasource=<%#((DataRowView)Container.DataItem)
.Row.GetChildRows("myrelation")%>runat="server">
<itemtemplate>
<%#DataBinder.Eval(Container.DataItem,"["title_id"]")%><br>
</itemtemplate>
</asp:repeater>
<!--endchildrepeater-->
</itemtemplate>
</asp:repeater>
<!--endparentrepeater-->
</form>
</body>
</html>
Nestedrepeater.aspx.cs
usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
namespaceyourprojectname
{
publicclassnestedrepeater:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.Repeaterparent;
publicnestedrepeater()
{
Page.Init+=newSystem.EventHandler(Page_Init);
}
publicvoidPage_Load(objectsender,EventArgse)
{
//CreatetheconnectionandDataAdapterfortheAuthorstable.
SqlConnectioncnn=newSqlConnection("server=(local);database=pubs;uid=sa;pwd=;");
SqlDataAdaptercmd1=newSqlDataAdapter("select*fromauthors",cnn);
//CreateandfilltheDataSet.
DataSetds=newDataSet();
cmd1.Fill(ds,"authors");
//CreateasecondDataAdapterfortheTitlestable.
SqlDataAdaptercmd2=newSqlDataAdapter("select*fromtitleauthor",cnn);
cmd2.Fill(ds,"titles");
//CreatetherelationbewtweentheAuthorsandTitlestables.
ds.Relations.Add("myrelation",
ds.Tables["authors"].Columns["au_id"],
ds.Tables["titles"].Columns["au_id"]);
//BindtheAuthorstabletotheparentRepeatercontrol,andcallDataBind.
parent.DataSource=ds.Tables["authors"];
Page.DataBind();
//Closetheconnection.
cnn.Close();
}
privatevoidPage_Init(objectsender,EventArgse)
{
InitializeComponent();
}
privatevoidInitializeComponent()
{
this.Load+=newSystem.EventHandler(this.Page_Load);
}
}
}有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到java编译器那么简易。 |
|