2011-11-03 11 views
6

Próbuję utworzyć niestandardowy atrybut dla każdego elementu listy w elemencie formantu wyboru HTML databound.Ustawianie niestandardowego atrybutu na elemencie listy w formancie HTML Select Control (.NET/C#)

Wynikiem HTML powinien wyglądać mniej więcej tak:

<select> 
<option value="1" data-value="myValue1">item</option> 
<option value="2" data-value="myValue2">item</option> 
<option value="3" data-value="myValue3">item</option> 
</select> 

próbowałam dodając atrybuty, takie jak to, ale oni nie są renderowane:

<select id="selectList" class="multiselect" multiple="true" name="selectList[]" runat="server"></select> 


ListItemCollection values = new ListItemCollection(); 

ListItem test = new ListItem("add"); 
test.Attributes.Add("data-value", "myValue"); 

values.Add(test); 

this.selectList.DataSource = values; 
this.selectList.DataBind(); 

Jakieś przemyślenia na temat tego, jak można to osiągnąć? Dzięki!

Odpowiedz

11

Musisz dodać atrybuty do elementów listy kontrolnej. Powiązanie danych z kontrolą listy może ustawiać tylko tekst o nazwie &. Więc najprostszym sposobem jest dodawanie elementów ręcznie zamiast wiązania danych - na przykład:

ListItem test = new ListItem("text1", "value1"); 
test.Attributes.Add("data-value", "myValue1"); 
applicationList.Items.Add(test); 

Jeśli musisz używać wiązania danych następnie trzeba obsłużyć DataBound zdarzenie, a następnie iteracyjne nad lista przedmiotów formantu i dodać/zestaw wymagany atrybut. Szczerze mówiąc, uważam, że jest to runda robienia rzeczy.

+0

Niesamowite dzięki Vinay. Nie przyszło mi do głowy, że zrezygnowałem z wiązania danych i zamiast tego dodawałem elementy bezpośrednio. :) – kirkyoder

Powiązane problemy