具有2个数据源的中继器

本文关键字:中继器 数据源 2个 具有 | 更新日期: 2023-09-27 18:25:10

我得到了两个数据库表,USER and MESSAGE

USER: UserID, FirstName, LastName 
MESSAGE: MessageID, UserID, Content 

我正在使用一个中继器来显示消息,它从MESSAGE表中检索数据,该表包含一个UserID,也显示了该表。我想显示firstname和lastname,而不是UserID,但我如何在中继器中做到这一点?我需要使用2个数据源吗?

MESSAGE表不包含FirstName和LastName,所以我根据MESSAGE表格中的UserID从USER表格中读取FirstName与LastName。

private List<Message> listMessages = Database.GetMessages();
repeaterMessages.DataSource = listMessages;
repeaterMessages.DataBind();

使用上面的代码,我可以在中继器中显示MessageID、UserID和Content,但不能显示FirstName和LastName。

我真的不知道我能做什么…

我想要这样的东西(在中继器内):

MessageID: 1
Mike Johnson
This is the content.

但我得到的是:

MessageID: 1
UserID: 43
This is the content.

具有2个数据源的中继器

消息类有MessageIDUserIDContent作为成员。您需要选择与User连接的Message,并仅投影要显示的列。

例如,您可以定义一个名为DisplayableMessage的类,例如它将具有成员,如MessageIDUserNameContent。您可以为该类定义一个方法,将其命名为GetDisplayableMessage,它将基于MessageUser数据初始化DisplayableMessage列表。然后您可以将此方法与RepeaterDataSource相关联。