如何避免绑定数据表中C#中的重复行?

时间:2014-05-19 11:50:56

标签: c# asp.net sql ado.net

我的场景很简单,但我很难在编码中实现它。

我有两张名为电影和电影时间的桌子。我使用sql查询连接了两个表,并从datatable绑定到gridview。

电影表的结构是,

theatrename     filmname
   max          Spiderman
   well         Godzilla

电影时间表的结构是,

theatrename      time
   max           10:00 am
   max           01:00 pm
   max           04:00 pm
   well          11:30 am

我希望输出为

 theatrename     filmname     time
                              10:00 am
   max            Spiderman   01:00 pm
                              04:00 pm  
   well           Godzilla    11:30 am

我使用了这样的查询。

 SELECT film.theatrename,film.filmname,filmtime.time FROM film  left join filmtime on film.theatrename=filmtime.theatrename

通过使用此查询,我得到的结果如下,

theatrename     filmname     time
   max           Spiderman    10:00 am
   max           Spiderman    01:00 pm
   max           Spiderman    04:00 pm  
   well           Godzilla    11:30 am       

任何帮助对我都会更有帮助。提前致谢。

1 个答案:

答案 0 :(得分:0)

如果剧院" max"有一部电影吗?你能在电影时间表中观看所有电影吗?


好吧它总会显示theatrename和filmname togheter的时间,但你可以先从电影表中选择电影名称和电影名称,然后在电影时间为每一行进行第二次选择,同时创建GridView你在哪里有theatrename ...

如果我告诉你我的意思,我认为这更容易。

public void FillGridview()
{
    reader = Select * from film;

    while (reader.Read())
    {
        reader2 = Select time from filmtime where theatername = reader["theatername"];
        //add the filmname and the theatrename to the gridview-cells here
        while (reader2.Read())
        {
            //add the times to the gridview-cell here (You can start a new line if you want a break with Environment.NewLine()
        }

    }
}

或者你只是将theatrename和filmname写入会话中,在gridview中的每一个新行上检查它是否在会话中,如果是,则不将它添加到新行的单元格中,如果没有将它添加到单元格中在行中。

或者在RowDataBound-Event查看它,并在标签/其中不止一次的时候制作标签。