Мне связали основной DropDownList с ObjectDataSource:
<asp:DropDownList ID="DropDownList1" runat="server"
AutoPostBack="True" DataSourceID="objDataSource1"
DataTextField="FieldName" DataValueField="FieldID" />
DataTable, из которого это получает DataTextField
и DataValueField
значения также возвращают некоторую другую интересную информацию о записях. Сказать Active = Y/N
для пользы простоты.
То, что я хотел бы сделать, должно установить свойство цвета фона Объекта DropDownList на основе того поля Active в результатах DataSource. Далее, я хотел бы сделать это "в той же передаче" как тогда, когда DropDownList связывается с данными. Таким образом, мое предположение - то, что это должно произойти во время OnDataBound.
Вещи я уже знаю/пробую:
Я мог возвратиться и цикл через объекты DropDownList позже. Но это включило бы циклы встраивания и повторно посещение строк DataTable, и это просто кажется неэффективным
int row;
for (row = 0; row < DropDownList1.Items.Count - 1; row++)
{
[[if this row = that data row]]
DropDownList1.Items[row].[[DoStuffHere, etc.]]
}
Мы уже наполняем как это GridView OnRowDataBound
событие, путем доступа GridViewRowEventArg
s e. То, что я, кажется, пропускаю, OnDropDownListItemBound
событие, так сказать.
Надежда я был ясен и краток. Кажется, как будто это должно быть легко...
Вы не можете сделать это во время OnDataBinding, потому что данные еще не были привязаны. Лучшая попытка - (1), то есть использовать OnDataBound и перебирать элементы в цикле.
protected void DropDownList1_DataBound(object sender, EventArgs e)
{
foreach(ListItem myItem in DropDownList1.Items)
{
//Do some things to determine the color of the item
//Set the item background-color like so:
myItem.Attributes.Add("style","background-color:#111111");
}
}