2009-07-31 30 views
9

Tôi đang thiết DataSource của một repeater ASP.NET như sau:Anonymous loại trong trường hợp Repeater DataBound

rptTargets.DataSource = from t in DB.SalesTargets select new { t.Target, t.SalesRep.RepName }; 

Bây giờ, trong trường hợp OnDataBound của repeater, làm thế nào tôi có thể lấy các thuộc tính RepName và Target từ loại ẩn danh có trong e.Item.DataItem?

Nhiều Cảm ơn

Trả lời

19

Bạn có thể sử dụng DataBinder.Eval:

string repName = (string)DataBinder.Eval(e.Item.DataItem, "RepName"); 
string target = (string)DataBinder.Eval(e.Item.DataItem, "Target"); 
+0

Perfect, nhờ Richard. – staterium

13

Tôi biết câu hỏi này đã được trả lời hơn một năm trước, nhưng tôi đã chỉ tìm thấy một giải pháp .NET 4.0 cho vấn đề này.

Khi bạn gắn loại vô danh của bạn để một repeater, bạn có thể truy cập vào các tài sản trong trường hợp OnDataBound như thế này:

dynamic targetInfo = e.Item.DataItem as dynamic; 

string repName = targetInfo.RepName; 
string target = targetInfo.Target; 
+0

Điều gì sẽ xảy ra nếu tôi phải đặt điều kiện vào thành viên của mình từ targetInfo như sau (targetinfo.RepName == "")? làm thế nào để đặt một điều kiện? bởi vì nó mang lại cho tôi một ngoại lệ mà nó không có bất kỳ kiểu như thế này – LojiSmith

+0

Trong trường hợp đó bạn có lẽ nên làm một cái gì đó như 'string repName = targetInfo.RepName; if (repName == "") {...} ' –

Các vấn đề liên quan