2013-03-21 65 views
0

我有DataGrid我綁定到DataTable,並顯示三個BoundColumnDataGrid--一列使用與其他數據不同的數據

我想有第四列連接不同的數據 - 例如,如果DataGrid中的列#3是UserID,我想用它來查詢數據庫並檢索用戶的名字,並將其顯示在第四欄中。

是否有任何建議的方法呢?我不是DataGrid的專家,但我應該看看TemplateColumn還是其他方面的內容?

哪個事件我應該鉤這一切查詢到,OnItemDataBound

回答

3

推薦的方法是爲原始查詢的一部分返回用戶的名字,只是用BoundColumn。如果您需要在顯示之前修改數據,那麼您可以使用TemplateColumnOnItemDataBound事件來處理您的數據。

運行查詢OnItemDataBound是不是我會永遠鼓勵。因此,如果您的網格一次顯示100條記錄,那麼您希望每頁加載運行100個額外的查詢?這是如果你實現的話,可能在測試期間有理由運行。一旦加載,你會發現運行數百個額外的查詢並不是一個好主意......它可以通過修復原始查詢或者根據你的數據庫結構和你的複雜性來製作一個非規範化的表格來解決查詢。

當我跑進類似的問題,我去了非規範化的表路線。

+0

你完全正確的是不想運行100多個額外的查詢。然而,問題在於原始數據正在從Excel工作表轉換到上面提到的DataTable--我在該工作表中沒有該用戶的名字。好消息是,任何給定頁面的工作表中不會有超過100個條目(越過他們的心,商界人士所做的)。 – larryq 2013-03-21 21:48:55

+2

@larryq:在這種情況下,最好的辦法是運行第二個查詢來抓取所有的用戶。然後將一列添加到數據表(在代碼中)並填寫每行的用戶名。一旦完成,請執行數據綁定。 – NotMe 2013-03-21 23:12:28

+0

@Chris Lively:很棒的主意,感謝它。 – larryq 2013-03-22 04:24:11

0

使用在SQL語句中加入以獲得其他值。

相關問題