问题:

Datalist1显示say这个表的数据

然后想在Datalist1中嵌套一个Datalist2用于显示对应的评论

表2的 sayID对应表1的id,若表2中找不到对应sayId则在对应的Datalist1中不显示Datalist2.
难点在于如何达到“林夏”的说说下面只显示“黄磊”、“叶伟信”的评论,“韩寒”的下面只显示“程程”的评论。(林夏的id是3,所以查询对应的表2中sayId为3的行)。

代码

前台代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
<form id="form1" runat="server">
<h2 style="text-align:center;">评论列表</h2>
<div align="center" style="margin-top:20px;">
<asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound" Width="50%" CssClass="table table-bordered"
CellPadding="0" CellSpacing="0">
<ItemTemplate>
<div>
来自<%# Eval("place") %>的<%# Eval("username") %>于<%# Eval("date") %>发表
</div>
<div>
<%# Eval("text") %>
</div>
<asp:DataList ID="DataList2" runat="server" Width="100%">
<ItemTemplate>
<div style="border: 1px dashed black; margin: 1px;">
<div>
<%#Eval("username") %>的评论<%#Eval("date") %>
</div>
<div>评论内容:<%#Eval("text") %> </div>
</div>
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>

后台cs:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.DataList1.DataSource = Data();
this.DataList1.DataBind();
}
} public DataSet Data()
{
DataSet ds = new DataSet(); DataTable dtParent = new DataTable();
dtParent.Columns.Add("id", typeof(int));
dtParent.Columns.Add("username", typeof(string));
dtParent.Columns.Add("text", typeof(string));
dtParent.Columns.Add("date", typeof(string));
dtParent.Columns.Add("place", typeof(string)); dtParent.Rows.Add(, "摩根", "这个...", "2014.6", "伦敦");
dtParent.Rows.Add(, "韩寒", "潮流...", "2015.7", "湖南");
dtParent.Rows.Add(, "林夏", "岁月...", "2016.2", "小城");
dtParent.Rows.Add(, "王菲", "我会...", "2015.9", "香港");
dtParent.Rows.Add(, "郭敬明", "我们...", "2015.1", "上海"); DataTable dtChild = new DataTable();
dtChild.Columns.Add("id", typeof(int));
dtChild.Columns.Add("sayId", typeof(int));
dtChild.Columns.Add("username", typeof(string));
dtChild.Columns.Add("text", typeof(string));
dtChild.Columns.Add("date", typeof(string));
dtChild.Rows.Add(, , "黄磊", "我是第一个评说", "2016.6.17 13:06:12");
dtChild.Rows.Add(, , "叶伟信", "评论林夏的说", "2016.6.17 12:26:43");
dtChild.Rows.Add(, , "程程", "我评论韩寒", "2015.3.1 15:20:10"); ds.Tables.AddRange(new DataTable[] { dtParent, dtChild }); DataRelation dr = new DataRelation("relation", dtParent.Columns["id"], dtChild.Columns["sayId"]);
ds.Relations.Add(dr); dtParent = ds.Relations["relation"].ParentTable;
dtChild = ds.Relations["relation"].ChildTable;
return ds;
} protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataList dataList = e.Item.FindControl("DataList2") as DataList;
DataRowView rowv = (DataRowView)e.Item.DataItem; DataRow[] rows = Data().Tables[].Select("sayId='" + rowv["id"].ToString() + "'");
DataTable dt = Data().Tables[].Clone();
foreach (DataRow dr in rows)
{
dt.ImportRow(dr);
}
dataList.DataSource = dt;
dataList.DataBind();
}
}

后台代码中数据源部分可以用ado.net查询数据库方式替换。

效果图:

ASP.NET DataList嵌套实现评论效果的更多相关文章

  1. ASP.NET-DataList控件-DataList嵌套

    DataList是ASP.NET的数据控件之一,在使用时要对其进行数据绑定.但是使用过程中难免会出现需要根据已绑定表中的某列数据来作进一步的查询和显示,就需要使用DataList嵌套来解决此类问题. ...

  2. DataList嵌套绑定例子

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataList控件.asp ...

  3. iOS tableView嵌套部分WebView效果实现

    对于一些资讯类的app,比如网易新闻,今日头条这样的,他们的文章详情页大部分基本都是tableView中嵌套webView来实现的效果,其中顶部标题,关注按钮等这些可能是原生的,内容部分是webVie ...

  4. [置顶] Datalist嵌套datalist,页面传值,加密,数据绑定

    <asp:DataList ID="dlMajor" runat="server" CssClass="dllist" OnItemD ...

  5. 解决ScrollView中嵌套ListView滚动效果冲突问题

    在ScrollView中嵌套使用ListView,ListView只会显示一行到两行的数据.起初我以为是样式的问题,一直在对XML文件的样 式进行尝试性设置,但始终得不到想要的效果.后来在网上查了查, ...

  6. ASP.NET DataList绑定数据并实现分页

    显示当前页码Label属性 值ID NowPageNumberLabtext    1 ×××××××××××××××××××××显示总页码Label属性 值ID BackPageNumberLabt ...

  7. 转:前端页面a标签嵌套a标签效果的两种解决方案

      这是由工作中的一个小改动需求得到的这个解决方案的:那个需求是这样的,如图: 需求原来是球队名字没有点击功能的,而蓝色方框两队之间的比赛点击的时候会跳转到比赛文字直播页面.现在需要要求点击球队名字要 ...

  8. Asp.net FileUpload+Image制作头像效果

    在Web开发中会经常使用到个人信息注册,而个人信息中通常需要自己的头像或者照片.今天主要介绍一下使用FileUpload+img控件上传照片. FileUpLoad控件使用介绍 FileUpLoad控 ...

  9. 完全使用ASP.NET实现的省市区级联效果

    本功能特点:下级的显示和数据的加载都是由上一级下拉框的SelectedIndexChanged触发的,在上级下拉框没有选择之前,下级不会出现,用户体验比较好.无刷新方面,采用AJAX技术,在数据选择的 ...

随机推荐

  1. 【M19】了解临时对象的来源

    1.首先,确认什么是临时对象.在swap方法中,建立一个对象temp,程序员往往把temp称为临时对象.实际上,temp是个局部对象.C++中所谓的临时对象是不可见的,产生一个non-heap对象,并 ...

  2. JavaScript toFixed() 方法

    定义和用法toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 语法NumberObject.toFixed(num) 参数 描述num 必需.规定小数的位数,是 0 ~ 20 ...

  3. SAP进销存难点分析及对策

    1.基本需求: 业务部门提出如上表格式进销存需求,并且金额要和总账中存货科目保持一致,如果要实现上表格式进校存,可以通过SAP标准程序(MC.9.MB51.MB5B)加工繁琐而成.现分析一下SAP标准 ...

  4. net.ipv4.tcp_tw_recycle

    原创 2016-03-07 CFC4N 运维帮 本文为翻译英文BLOG<Coping with the TCP TIME-WAIT state on busy Linux servers> ...

  5. Linux内核学习笔记2

    http://www.cnblogs.com/bastard/category/412387.html

  6. PHP获取远程图片并调整图像大小

    <?php /** * *函数:调整图片尺寸或生成缩略图 *修改:2013-2-15 *返回:True/False *参数: *   $Image   需要调整的图片(含路径) *   $Dw= ...

  7. Day03 - Python 函数

    1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...

  8. ElasticSearch 概念解析

    索引(index) 1. 作为名词: 索引(index)指我们在 ES 中用来存放 doc 的一个库,类似数据库系统的 DB 概念. 2. 作为动词: 指把数据经过分析并存放到 ES 中形成索引(名词 ...

  9. 基于嵌入式的c语言连接器

      一个C程序可能是由多个分别编译的部分组成,这些不同部分通过一个通常叫做链接器(或连接器,载入器)的程序合并成一个整体.因为编译器一般每次只处理一个文件,所以它不能检测出那些需要一次了解多个源程序文 ...

  10. ArrayUtils用法

    /* 1. ArrayUtils.isEmpty(strs) : 判断数组是否为空 , 不为空返回false,为空true */     ArrayUtils.isEmpty(new String[] ...