惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
T
The Exploit Database - CXSecurity.com
The GitHub Blog
The GitHub Blog
量子位
S
SegmentFault 最新的问题
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Threat Research - Cisco Blogs
I
Intezer
Hugging Face - Blog
Hugging Face - Blog
Spread Privacy
Spread Privacy
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
Know Your Adversary
Know Your Adversary
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
Cyberwarzone
Cyberwarzone
L
LINUX DO - 热门话题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tenable Blog
Jina AI
Jina AI
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
AWS News Blog
AWS News Blog
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
T
Threatpost
大猫的无限游戏
大猫的无限游戏
I
InfoQ
T
Tor Project blog
Project Zero
Project Zero
F
Full Disclosure
L
Lohrmann on Cybersecurity
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
B
Blog
Apple Machine Learning Research
Apple Machine Learning Research
The Hacker News
The Hacker News
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
V2EX
The Cloudflare Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security

博客园 - 过客匆匆

几个Javascript函数 - 过客匆匆 - 博客园 一个在vbscript中读取cookie的程序函数 ASP2HTML WITH TEMPLET [转载] 惊云下载系统里的html文件生成方法 - 过客匆匆 - 博客园 [转载]网站生成静态页面攻略 用Visual C#打造多页面网页浏览器 漫谈ASP.NET设计中的性能优化问题 ASP生成静态网页的方法 令网站打开提高速度的7大秘方 ASP.NET 格式化字符串(转) 选项卡 注册时倒计时的东西 天气预报代码 asp.net中让服务器端控件获得焦点 ACCESS数据库的压缩,备份,还原,下载,删除的实现 数据库存储过程分页显示 无效的 CurrentPageIndex 值 一个比较实用的大数据量分页存储过程 动态ASP网站生成HTM、HTML静态网站方法 模板生成静态页面
嵌套使用DATAList
过客匆匆 · 2006-05-09 · via 博客园 - 过客匆匆

嵌套使用 datalist


  作者:未知[获得此文档时候没有作者记录,深感抱歉,本文档全为转载]  

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>