Как отформатировать отдельные Объекты DropDownlist (цвет, и т.д.) во время onDataBinding события

Мне связали основной 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.

Вещи я уже знаю/пробую:

  1. Я мог возвратиться и цикл через объекты DropDownList позже. Но это включило бы циклы встраивания и повторно посещение строк DataTable, и это просто кажется неэффективным

     int row;
     for (row = 0; row < DropDownList1.Items.Count - 1; row++)
     {
        [[if this row = that data row]]
         DropDownList1.Items[row].[[DoStuffHere, etc.]]
     }
    
  2. Мы уже наполняем как это GridView OnRowDataBound событие, путем доступа GridViewRowEventArgs e. То, что я, кажется, пропускаю, OnDropDownListItemBound событие, так сказать.

Надежда я был ясен и краток. Кажется, как будто это должно быть легко...

13
задан geo 8 June 2015 в 13:28
поделиться

1 ответ

Вы не можете сделать это во время 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");
    }
}
24
ответ дан 1 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: