如何避免c#中来自绑定数据表的重复行

本文关键字:数据表 绑定 何避免 | 更新日期: 2023-09-27 18:04:14

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

我有两个名为film和filmtime的表。我使用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       
任何帮助都会对我更有帮助。提前感谢。

如何避免c#中来自绑定数据表的重复行

如果电影院"max"有多部电影怎么办?你能在电影时间表上的时间看完所有的电影吗?


它总是会将theatrename和filmname与时间一起显示,但是你可以先从film表中选择film-names和theatername然后在创建GridView时对每一行的filmtime进行第二次选择其中where子句中有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中检查它,并在它不止一次出现时使标签不可见