Как добавить дополнительный атрибут в список DropDown в С#

У меня есть раскрывающийся список, в котором я привязываю List как:

var ddlLst2 = new List<string> { "Audi", "BMW", "Ford", "Vauxhall"};
ddlLst2.Sort();

foreach (var item in ddlLst2)
{
 DropDownList2.Items.Add(new ListItem(item));

}
</string>

Результат:

<select id="DropDownList2" onchange="javascript:setTimeout('__doPostBack(\'DropDownList2\',\'\')', 0)" name="DropDownList2">

 
 
 
 
 

</select>

Но я хочу добавить атрибут в каждый элемент добавить ожидаемый результат, как показано ниже:

Ожидаемый результат:

<select id="DropDownList2" onchange="javascript:setTimeout('__doPostBack(\'DropDownList2\',\'\')', 0)" name="DropDownList2">

 
 
 
 
 

</select>

Как вы можете видеть выше, добавлен дополнительный атрибут "code", значение code исходит из запроса.

4 ответа

foreach (var item in ddlLst2)
 {
 ListItem tmp = new ListItem();
 tmp.Text = item.ToString();
 tmp.Attributes.Add("AttribName", "AttribValue");
 DropDownList2.Items.Add(tmp);

 }

или что-то в этом роде... играйте с доступными свойствами tmp...


void Main()
{
var ddlLst2 = new List<string> { "Audi", "BMW", "Ford", "Vauxhall"};
 ddlLst2.Sort();

 var ctrls = new List<listitem>();
 int i =0;
 foreach (var item in ddlLst2)
 {
 //DropDownList2.Items.Add(new ListItem(item));
 ListItem li = new ListItem(item);
 li.Attributes.Add("code", i.ToString());
 ctrls.Add(li);
 i++;
 }

 foreach (ListItem element in ctrls)
 {
 Console.WriteLine(element.Attributes["code"]);
 }
}
</listitem></string>


Для события JS: вы можете подписать его с вашего javascript. Т.е. с JQuery: $('#DropDownList2').change(function() { alert("Fired!"); });


protected void dropdownlist_DataBound(object sender, EventArgs e)
 {
 DataTable dt = new DataTable();
 DataView dv = (DataView)sqldatasource.Select(DataSourceSelectArguments.Empty);
 dt = dv.ToTable();

 foreach (DataRow dr in dt.Rows)
 {
 dropdownlist.Items.FindByValue(dr[0].ToString()).Attributes.Add("attr0", dr[2].ToString());
 dropdownlist.Items.FindByValue(dr[0].ToString()).Attributes.Add("attr1", dr[3].ToString());
 dropdownlist.Items.FindByValue(dr[0].ToString()).Attributes.Add("attr2", dr[4].ToString());

 }

 }

licensed under cc by-sa 3.0 with attribution.