有的新闻有评论有的没有,分成一个新闻表、一个评论表,通过ID、PID连接,经过查询语句最后数据格式这样的:新闻1  评论A
新闻1  评论B
新闻2  评论A
新闻3  评论A
新闻3  评论B
新闻3  评论C
.
.
想显示成这样:新闻1  
---------
评论A
评论B新闻2
--------
评论A新闻3
--------
评论A
评论B
评论C
.
.
.
这个怎么做??用嵌套好象也不行啊,因为有的新闻没有评论。希望大家说的详细些,如用什么语句、什么控件等等,谢谢了!

解决方案 »

  1.   

    怎么写SQL语句呀??现在有重复的新闻标题,怎么写循环呢??我就这个不明白,,谢谢了!
      

  2.   

    嵌套
    DataGrid嵌套DataList或GridView嵌套Datalist
      

  3.   

    谢谢!楼上的!但用嵌套的话,怎么写SQL语句呀??现在有重复的新闻标题,怎么写循环呢??我就这个不明白,,
      

  4.   

    把新闻的ID写入评论表中,然后
    select * from 评论表 where 新闻ID=?
    用datalist显示出数据来,就OK了..
      

  5.   

    net路上潜行:你没明白我的意思,现在主要是把有评论的新闻标题显示在上面,下面是相关评论,然后再下一条新闻继续这样循环下去,如何单独提取出新闻标题和相关评论再显示的问题,不是说有重复的新闻标题没法办了,,用select * from 评论表 where 新闻ID=?,那下一个新闻怎么显示呢?
      

  6.   

    寫一個自定義控件
    在.ascx中
    1.一個label:用來接收新聞
    2.一個datagrid:用來接收當前新聞的評論.
    3.添加一個屬性,返回和設置新聞的標題
    在.aspx中
    添加控件,把新聞標題傳給自定義控件,這樣就可以顯示你想要的新聞和評論
    -----------------
      

  7.   

    恩,用两个datalist控件,第2个嵌套进第一个...
    在模板设计普通项中,添加一个Lael控件,用来接受新闻标题,在它下面放置datalist2,用来绑定评论的标题...这样我想应该可以满足你的要求....
      

  8.   

    楼上,
    现在最后数据格式这样的:
    新闻1  评论A
    新闻1  评论B
    新闻2  评论A
    新闻3  评论A
    新闻3  评论B
    新闻3  评论C象“新闻1”,第一个datalist怎么做呢,3条记录怎么就显示1个?然后让第二个datalist取得第一个datalist的newsid循环,这个行
      

  9.   

    然后让第二个datalist取得第一个datalist的newsid循环,现在“新闻1”有2条,总不能循环2次吧
      

  10.   

    http://bbs.bcv.cn/dispbbs.asp?BoardID=56&ID=635这是一个嵌套的例子,看一下吧,跟这个差不多.就把dropdownlist改成datalist就行了.
      

  11.   

    private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    foreach(DataListItem item in DataList1.Items)
    {
    string pid=((Label)item.FindControl("Label1")).Text;
    //连接数据库
    string pconnstr="Provider=Microsoft.Jet.Oledb.4.0;Data Source="
    +Server.MapPath(ConfigurationSettings.AppSettings["数据库路径"])+";";
    OleDbConnection pconn=new OleDbConnection(pconnstr);
    pconn.Open();
    string psql;
    psql="select p_name from pnews where n_id='"+pid+"'";

    OleDbDataAdapter psa=new OleDbDataAdapter(psql,pconn);
    DataSet pds=new DataSet();
    psa.Fill(pds,"pnews");

    ((DataList)item.FindControl("DataList2")).DataSource=pds.Tables["pnews"].DefaultView;
    ((DataList)item.FindControl("DataList2")).DataBind();
    pconn.Close();
    pconn.Dispose();
    }
    }

    }
      

  12.   

    另外,DataList1的绑定代码还要写,要放在!IsPostBack
      

  13.   

    这个不是嵌套的问题,因为最后数据格式这样的:
    新闻1  评论A
    新闻1  评论B
    新闻2  评论A
    新闻3  评论A
    新闻3  评论B
    新闻3  评论C
    如果用嵌套的话,象“新闻1”有两条,那不是嵌套2次了,那什么了???
      

  14.   

    to hjp1137(.net路上潜行) :没明白我和意思,你是把全部新闻都显示出来,然后下是它的评论,我这个是只列出有评论的新闻显示,没有评论的新闻不显示,就是先在评论表中通过连接查询,把新闻标题显示出来,每条信息后面是它的评论,是想在后台管理时用的,不是前台全部新闻显示,
    新闻1  评论A
    新闻1  评论B
    新闻2  评论A
    新闻3  评论A
    新闻3  评论B
    新闻3  评论C
    这个新闻不是全部新闻是有评论的新闻,,查询出来的结果。。
      

  15.   

    晕,那很简单啊,你在新闻表中每个新闻加一个字段n_no,作为评论条数,然后绑定数据时只查找n_no大于0的不就行了吗?
      

  16.   

    select * from 新闻表 as t where exists (select * from 评论表 as ta where ta.title_id=t.title_id)这样评论表里面没有的新闻就不会查询出来