嵌套使用 datalist

原创 2002年07月25日 09:03:00

datalist 是 “通过使用模板显示数据源中的项“ 的服务器控件,如果嵌套使用,对于显示层级数据是一种很好的选择,(层级数据就好像中国有很多省,省下有很多县,县里有很多乡),本篇叙述如何实现这种功能。 (也适用于嵌套datagrid&repeater)

先看下面这个例子,channels在这里是“频道”,channels下有很多columns“栏目”要显示,就好像sina.com 的“生活频道“有很多栏目,有关于男人女人等等的。

程序先创建一个datalist(id=DataList1)显示所有channels,然后在DataList1的OnItemCreated事件里判断当每一个Item 或 AlternatingItem被创建的时候,我们用程序动态生成一个datalist用来显示这个channel下的columns,在动态生成datalist的时候“显示模板“的创建很重要,在这里我们使用了ITemplate接口,自定义了myTemp显示模版,它的作用就是显示绑定的数据.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <script language = "C#" runat="server">
 
 ICollection CreateDataSource()
 {
    DataTable dt = new DataTable();
    DataRow dr;
 
    dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
 
    for (int i = 0; i < 10; i++)
    {
       dr = dt.NewRow();
       dr[0] = "Channels " + i.ToString();
       dt.Rows.Add(dr);
    }
 
    DataView dv = new DataView(dt);
    return dv;
 }
 
 ICollection CreateDataSource2(int i)
 {
    DataTable dt = new DataTable();
    DataRow dr;
  if(i<0) i = 0;
 
    dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
 
   for(int m=0;m<5;m++)
   {
         dr = dt.NewRow();
         dr[0] = "Channel" + i.ToString() + "__Columns" + m.ToString();
  dt.Rows.Add(dr);
   }
 
    DataView dv = new DataView(dt);
    return dv;
 }
 
 void Page_Load(Object sender, EventArgs e)
 {
    if (!IsPostBack)
    {
       DataList1.DataSource = CreateDataSource();
       DataList1.DataBind();
    }
 }
     
 private void DataList1_ItemCreated(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
 {
  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem  )
  {
   DataList dl = new DataList ();
   dl.ItemTemplate = new myTemp () ;
   dl.DataSource = CreateDataSource2(e.Item.ItemIndex );
   dl.DataBind ();
   e.Item.Controls.Add (dl);
  }
 }
 public class myTemp : ITemplate
 {
  static int itemcount;
  public void InstantiateIn(System.Web.UI.Control container)
  {
   Literal lc = new Literal();
   lc.Text = "<TR><TD>";
   lc.DataBinding += new EventHandler(TemplateControl_DataBinding);
   itemcount += 1;
   container.Controls.Add(lc);
  }
  private void TemplateControl_DataBinding(object sender, System.EventArgs e)
  {
   Literal lc;
   lc = (Literal) sender;
   DataListItem  container = (DataListItem ) lc.NamingContainer;
   lc.Text += DataBinder.Eval(container.DataItem, "StringValue");
   lc.Text += "</TD></TR>";
  }
 }
   </script>
 
<body>
 
   <form runat=server>

      <h3>DataList Example</h3>
 
      <asp:DataList id="DataList1" runat="server"
           BorderColor="black"
           CellPadding="3"
           Font-Name="Verdana"
           RepeatLayout="Table"
           RepeatColumns="5"
           GridLines="Both"
           BorderWidth = 1
           RepeatDirection="Horizontal"
           Font-Size="8pt"
           OnItemCreated="DataList1_ItemCreated"
           >
 
 <SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle>

         <HeaderStyle BackColor="#aaaadd">
         </HeaderStyle>

         <AlternatingItemStyle BackColor="Gainsboro">
         </AlternatingItemStyle>

         <HeaderTemplate>

            Channels

         </HeaderTemplate>
              
         <ItemTemplate>
        <%# DataBinder.Eval(Container.DataItem, "StringValue") %>
         </ItemTemplate>
 
      </asp:DataList>
 
      <p>
      <hr noshade align="left" width="300px">
   </form>
<br><a href="mailto:xlongjiu@etang.com">mailto:xlongjiu@etang.com</a><br>
</body>
</html>

datalist 中嵌套datalist 以及内層datalist 操作

找了好久 datalist 嵌套的例子,找到了地址2那个算是很好的了,在公司做了很久就是不能实现 内层datalist 删除事件,回家认真从头做一遍,发现确实可以,下面是我的一个测试的简单例子,供大家...
  • mathew3625
  • mathew3625
  • 2007年05月18日 16:54
  • 1709

.NET中DataList嵌套DataList的实例

      在有些业务需求中需要进行嵌套绑定的,以显示主从关系的数据。即,一个DataList中嵌套一个子DataList,而子DataList的数据则是随主DataList的数据进行变化的。如下图所...
  • 279503482
  • 279503482
  • 2010年06月21日 23:48
  • 3297

DataList嵌套DataList 子DataList访问父DataList数据(1. 页面绑定后台代码实现 纯代码)

aspx页面代码内嵌的DataList在页面使用后台的GetDetails方法绑定  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">...
  • amandag
  • amandag
  • 2008年06月11日 21:00
  • 2665

在DataList中套GridView

使用DataList控件中嵌套GridView控件主要是为了解决数据分类绑定的问题。在做web应用程序开发时,特别是大型网站,后台处理数据时经常会遇到数据分类绑定。如两个互有关联的数据表同时按条件显示...
  • powerboy
  • powerboy
  • 2007年10月18日 19:17
  • 1686

ASP.NET DataList嵌套实现评论效果

ASP.NET DataList嵌套实现评论效果
  • guwei4037
  • guwei4037
  • 2016年06月19日 21:27
  • 4155

Datalist的三层嵌套

 在开发过程中,经常会遇到嵌套的问题,以下是一个datalist的三层嵌套的例子:前台*.aspx页面...@ Page language="c#" Codebehind="datalist_qian...
  • junmail
  • junmail
  • 2006年11月02日 16:27
  • 2039

DataList的嵌套绑定

1、我们先在页面中布置好两个DataList。并分别起名,dlsProductMenu,dlsProductInfo。如下: TABLE id="Table3" cellSpacing="0"...
  • bingtingabc
  • bingtingabc
  • 2012年04月24日 16:50
  • 471

ASP.NET gridview 內嵌套DataList

AllowPaging="True"                         OnRowDataBound="gdvDetail_RowDataBound" AllowSorting="T...
  • love_zt_love
  • love_zt_love
  • 2013年11月29日 13:23
  • 1470

Asp.net 用datalist嵌套的方法实现二级菜单的分类导航

刚开始学习Asp.net做网站的时候, 做的是一个电子图书购买网站,发现图书有多级类目。   例如:小说分类下面世界名著,中国古典小说.......  文学类目下有 文学理论 中国古典诗歌。 这些要是...
  • u012260740
  • u012260740
  • 2014年03月13日 21:20
  • 1159

DataList嵌套DataList(2. 页面绑定后台代码使用ItemDataBound事件实现 纯代码)

aspx DataListNesting > > > > ...
  • amandag
  • amandag
  • 2008年06月11日 23:41
  • 2007
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌套使用 datalist
举报原因:
原因补充:

(最多只允许输入30个字)