如何避免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
任何帮助都会对我更有帮助。提前感谢。
如果电影院"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中检查它,并在它不止一次出现时使标签不可见