仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 625|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之利用嵌套的Repeater控件显现分级数据

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:32:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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编译器那么简易。
老尸 该用户已被删除
沙发
发表于 2015-1-18 16:16:32 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
若天明 该用户已被删除
板凳
发表于 2015-1-22 10:21:11 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
活着的死人 该用户已被删除
地板
发表于 2015-1-31 06:06:07 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
小女巫 该用户已被删除
5#
发表于 2015-2-6 17:46:11 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
变相怪杰 该用户已被删除
6#
发表于 2015-2-17 20:57:36 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
不帅 该用户已被删除
7#
发表于 2015-3-5 22:44:29 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
小妖女 该用户已被删除
8#
发表于 2015-3-12 16:34:37 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
只想知道 该用户已被删除
9#
发表于 2015-3-19 23:59:04 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-26 14:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表