从下拉列表的选定项中获取属性

7
我有一个下拉列表,需要存储比标准列表项更多的数据。我采用的方法是向每个列表项添加属性。
我监控更改并可以返回SelectedIndex,但不确定如何从那里获取属性,或者是否有更简单的方法来实现这一点。
你有什么想法吗?

Asp.net最佳实践...尝试使用隐藏输入。 - gdoron
你是如何添加属性的?使用了 item.Attributes.Add("value") 吗? - banana
@banana - 是的,只需将所需数据传递给一个方法,创建一个新的ListItem,然后添加一个属性。 - dotnetnoob
2个回答

11

试一下这个:

ddl.SelectedItem.Attributes["key"];

3
是的,也不是。从技术上讲,您的答案是正确的,但存在一个故障,即尽管下拉列表控件支持属性,但似乎无法在回发时保留这些属性。 - dotnetnoob
我不知道为什么它对你不起作用。我创建了一个Web应用程序,在页面加载方法中,我创建了一个ListItem并将其添加到ddl中,然后我添加了ddl.Items [0] .Attributes.Add(“data”,“some data”);。我添加了一个按钮,在单击事件中编写了:string a = ddl.SelectedItem.Attributes [“data”]; - 现在a对我来说包含“some data”。 - banana

2

我之前尝试过这样做,发现无法真正使用DropDownList属性。

我做的是:

创建一个包含KeyValuePair列表。KeyValuePair中的键是您在DropDownList项中放置的相同ID。

KeyValuePair的值是您想要保留/连接到项目的值(或值)。

您可以将List存储在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));

我在使用VB.NET。我发现使用词典(导入System.Collections.Generic)更容易。 储存: Dim dict As New Dictionary(Of Integer, String) dict.Add(0, "data0") dict.Add(1, "data1") ViewState("DataDict") = dict获取: Dim dict As New Dictionary(Of Integer, String)(CType(ViewState("DataDict"), Dictionary(Of Integer, String))) dict.Item(ddl.SelectedIndex) - Matt Roy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接