2011-02-24 15 views
2

我有一個Listbox僅更改Listbox的DataValueField?

dimension.DataSource = provider.DimensionList; 
dimension.DataBind(); 

我想要的值是這些元素

dimension.DataSource = provider.DimensionList; 
dimension.DataValueField = "ID"; 
dimension.DataBind(); 

ID但我不希望文本更改爲ID,我想的是,dimension.DataTextField獲得object.ToString()

這怎麼辦?

+0

由MAUS給出的答案是很酷。但是,只是好奇,如果你沒有指定任何東西,你的Listbox的DataTextField是否設置爲ID?默認情況下,它應該設置爲item.ToString()[DimensionList中的項目],並且您可以覆蓋項目類型中的ToString()方法,它可以解決您的問題。 – 2011-02-24 15:05:13

+0

@Vijay,我沒有指定任何東西。我試圖將它設置爲空,但沒有任何更改。我猜如果設置了一個,那麼兩者都會得到該值... – BrunoLM 2011-02-24 15:06:34

+0

您可以嘗試覆蓋DimensionList項目類型上的ToString()方法並查看會發生什麼。例如:如果DimensionList中的每個項都是Test類的類型,則可以在Test中提供ToString()方法以返回當前狀態的字符串表示形式。 – 2011-02-24 15:10:16

回答

4

我不知道DimensionList的確切類型,但我相信,你可以使用select將返回一個匿名類型:

dimension.DataSource = provider.DimensionList.Select(d=>new {Id=d.Id,Text=d.ToString()}).ToList(); 
dimension.DataValueField = "Id"; 
dimension.DataTextField = "Text"; 
dimension.DataBind(); 
+0

很好的解決方法。我喜歡它:) – BrunoLM 2011-02-24 14:52:02

+0

整潔的解決方案! – Nick 2011-02-24 15:13:54