从两个表中获取两种不同类型的值并在gridview模板中显示

时间:2015-10-21 06:28:38

标签: asp.net sql-server gridview

我有一个令人困惑的场景。我有2个表。一个表存储已注册的新用户(tblAllUsers),另一个存储创建的新事件(tblAllEvents)。现在我想显示两者的组合gridview中的表ORDER BY注册日期时间:

如果最新值来自tblAllUsers,它应该显示    "迈克尔刚刚在网站上注册了#34; Michael是tblallusers中用户的第一个名字

如果值来自tblAllEvents,它应该显示    "钢琴展是由User34"其中钢琴展是tblAllEvents中的EventName

到目前为止,我已尝试创建两个表的联合,如:

 Select FirstName,RegDateTime from tblAllUsers 
 UNION ALL
 Select EventName,RegDateTime from tblAllEvents
 ORDER BY RegDateTime DESC

但是上面给出了FirstName列下的FirstName和Title,很难区分。

我如何为此设计gridview模板?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以像这样更改您的查询:

SELECT      TOP 1 *
FROM        (SELECT     FirstName, NULL AS EventName, RegDateTime 
            FROM        tblAllUsers
            UNION ALL
            SELECT      NULL, EventName, RegDateTime 
            FROM        tblAllEvents) AS a
ORDER BY    RegDateTime DESC

所以现在你有三列,FirstName或EventName被填充,具体取决于它来自哪个表。

在GridView中,您可以测试哪个值为空(EventName或FirstName)并相应地更改文本。

修改 您甚至可以只返回第一行(使用最新的RegDateTime):

Vec<String>

答案 1 :(得分:1)

您可以选择添加event type列并使用它来检查如何在网格视图上处理它

 Select 'User' as EventType, FirstName,RegDateTime from tblAllUsers 
 UNION ALL
 Select 'Event' as EventType, EventName,RegDateTime from tblAllEvents
 ORDER BY RegDateTime DESC

您可能还需要在'Event'中添加用户名,因为您还会显示创建活动的用户的姓名