2013-02-12 34 views
6

我有一個下拉列表,我需要存儲比標準列表項目允許的更多數據。我採取的方法是爲每個列表項添加一個屬性。從DropdownList中獲取屬性SelectedItem

我監視更改並可以返回SelectedIndex,但我不知道如何從那裏獲取屬性,或者是否有更簡單的方法來實現此目的。

任何想法?

+0

Asp.net在它的最好的... ...隱藏投入試。 – gdoron 2013-02-12 11:21:45

+0

你是如何添加屬性的? 'item.Attributes.Add( 「值」)'? – banana 2013-02-12 11:33:31

+0

@banana - 是的,只是將所需的數據傳遞給一個方法,創建了一個新的ListItem,然後添加了一個屬性。 – dotnetnoob 2013-02-12 11:37:02

回答

8

試試這個:

ddl.SelectedItem.Attributes["key"]; 
+0

它給你正確的價值嗎? – banana 2013-02-12 12:24:47

+0

是的,沒有。從技術上講,你的回答是正確的,但是有一個小故障,雖然下拉列表控件支持屬性,但它似乎並沒有在回傳中持續存在。 – dotnetnoob 2013-02-12 13:21:26

+0

我不知道爲什麼它不適合你。我創建了一個Web應用程序,在頁面加載方法中,我創建了一個'ListItem'並將其添加到ddl中,然後添加了'ddl.Items [0] .Attributes.Add(「data」,「some data」); '。我添加了按鈕,並在點擊事件中寫道:'string a = ddl.SelectedItem.Attributes [「data」];' - 和'a'現在包含了一些數據。 – banana 2013-02-12 16:05:22

2

我做了一次嘗試之前這一點,我想我真的無法使用屬性對DropDownList的屬性。

我做了以下內容:

創建包含KeyValuePair一個列表。 KeyValuePair中的鍵與放入DropDownList項目中的ID相同。

KeyValuePair的值是您希望與您的物品保持/連接的值(或值)。

您可以將列表存儲在您的viewState中,並在您選擇DropDownList中的項目並使用該ID找到正確的KeyValuePair後讀取數據。

這樣你就可以「存儲」這樣的數據:

var listKeyValuePair = new List<KeyValuePair<int, string>>(); 
    listKeyValuePair.Add(new KeyValuePair<int, string>(1, "data")); 
    ViewState["DataList"] = listKeyValuePair; 

,你可以得到這樣的數據:

var listKeyValuePair = (List<KeyValuePair<int, string>>)ViewState["DataList"]; 
    var dataILikeToHave = listKeyValuePair.Find(k => k.Key == Convert.ToInt16(dropDownlist.SelectedItem.Value)); 
+0

我在VB.NET中。我發現它更容易使用Dictionary(Imports System.Collections.Generic)。 (1,「data1」)' 'ViewState(「DataDict」 )= dict' Getting: 'Dim dict As New Dictionary(Of Integer,String)(CType(ViewState(「DataDict」),Dictionary(Of Integer,String)))' 'dict.Item(ddl.SelectedIndex )' – 2013-09-27 19:29:50