2009-04-13 42 views
0

我想將e.Item.DataItem中的值讀入字符串中,但無論出於何種原因,我似乎無法得到它,儘管我可以在監視窗口中看到它從DataItem中讀取匿名類型

+0

下面我們將需要比這更多的信息,如果我們明白髮生了什麼。 – Noldorin 2009-04-13 00:45:42

回答

2

您可以添加更多信息嗎?你真的想要一個字符串值還是你需要一個特定的字符串值?

如果您需要一個應該可行的字符串值。監視窗口傾向於通過在對象上調用.ToString來顯示值。如果監視窗口中的值是你想要的字符串,那麼你應該可以通過簡單地調用ToString來獲得它。

var item = e.Item.DataItem.ToString(); 

您需要對各種屬性進行空檢查。

0

這聽起來像你這樣做是這樣的:

obj.Datasource = (from .... select new { a=..., b=...}).ToList(); 

併爲您的項目之一,你想獲得「A」或「B」時,權值?

你可以,但它很複雜(不推薦)。要做到這一點,你必須將e.Item.DataItem轉換爲正確的類,但這是一個匿名類型,這意味着你不能在沒有任何欺騙的情況下指定轉換。你可以嘗試這樣的事:

private T ForceCast(T prototype, object obj) 
{ 
    return (T)obj; 
} 

然後,調用ForceCast(新{A = ......,B = ...},e.Item.DataItem強制轉換)。如果你在同一個程序集中,我認爲這將起作用(並且你爲a和b提供的值正確 - 編譯器會爲你猜測T並找出結果)。然而,更好的方法是定義一個真正的類來保存從數據源返回的數據。然後你可以將e.Item.DataItem轉換爲這個類,你會沒事的。

(注:?我還沒有真正嘗試運行這段代碼 - 這僅僅是一個想法,而讀這我,但我想我以前見過它也許是this blog