2013-07-28 30 views
1

我2數據庫表,USER and MESSAGE中繼器2點的數據源

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

我使用的中繼器,以顯示消息和它檢索從含有其還示出了用戶ID的MESSAGE-表中的數據。我想顯示名字和姓氏而不是用戶名,但我如何在中繼器中執行此操作?我需要使用2個數據源嗎?

MESSAGE-Table不包含FirstName和LastName,所以我正在根據MESSAGE-table中的UserID從USER-table中讀取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. 
+0

由於您的消息與用戶鏈接,因此請在消息實體中保留用戶的對象,而不僅僅是UserId。 –

+0

@AbhishekJain你的意思是我還應該添加兩個額外的實體到消息表? (名字和姓氏)? – Swag

+0

由於您有消息實體,您還必須擁有用戶實體。因此您的消息實體將包含MessageID,User(用戶完整實體),Content和User實體將包含UserId,FirstName,LastName,UserName,password等。因此,從數據庫檢索消息時還會檢索每條消息的用戶詳細信息。 –

回答

0

消息類有MessageIDUserIDContent作爲成員。您需要選擇與User聯合的Message,並只投影要顯示的列。

例如,您可以定義一個名爲DisplayableMessage的類,例如其中將包含成員的類,例如MessageID,UserNameContent。您可以爲該類定義方法,我們將其命名爲GetDisplayableMessage,它將基於MessageUser數據初始化DisplayableMessage列表。然後,您可以將此方法與RepeaterDataSource關聯。