具有2个数据源的中继器

时间:2013-07-28 14:51:16

标签: c# asp.net repeater

我有2个数据库表USER and MESSAGE

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

我正在使用转发器来显示消息,它从MESSAGE表中检索数据,该表包含也显示的UserID。我想显示firstname和lastname而不是UserID,但我如何在转发器中执行此操作?我需要使用2个数据源吗?

MESSAGE-Table不包含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.

1 个答案:

答案 0 :(得分:0)

邮件类以MessageIDUserIDContent为成员。您需要选择与Message加入的User,并仅投影您要显示的列。

例如,您可以定义名为DisplayableMessage的类,例如,其中包含MessageIDUserNameContent等成员。您可以为类定义一个方法,我们将其命名为GetDisplayableMessage,它将根据MessageUser数据初始化DisplayableMessage列表。然后,您可以将此方法与DataSource的{​​{1}}相关联。