如何向ASP.NET下拉列表添加额外属性字段

13

下面我可以设置值和文本:

dropListUserImages.DataValueField = "Value";
dropListUserImages.DataTextField = "Text";
dropListUserImages.Items.Add(new ListItem { Text = srText, Value = srValue});

我还想设置额外的属性,比如:

data-imagesrc
data-description 

我该怎么做呢?

2个回答

22

使用:

ListItem test  = new ListItem { Text = srText, Value = srValue}
test.Attributes.Add("data-imagesrc", "xxx");
test.Attributes.Add("data-description", "xxx");
dropListUserImages.Items.Add(test);

我发布后才看到这个 :-) - sgeddes
@Mounhim,你是正确的,http://aspnet.codeplex.com/workitem/7314,但这是因为你无法访问属性。 - Nix

2

我曾经遇到过将复杂的对象列表翻译成可在前端读取的值的挑战,我使用了类似下面的逻辑,并发现它非常有用,因为它可以适应各种类型的对象:

//Object can be whichever type as you wish
List<Object> example = new List<Object>();

var listItemExamples = example
    .Select(a => new Func<ListItem>(() => {
                ListItem item = new ListItem(a.PropropertyA.ToString(), a.PropropertyB.ToString() );
                item.Attributes["data-PropropertyC"] = a.PropropertyC.ToString();
                return item;
            })())
    .ToArray();

dropListUserImages.Items.AddRange(listItemExamples);

非常感谢您,这正是我所需要的! - Fahad

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