2009-04-13 59 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