Не удалось получить доступ к раскрывающемуся списку поля редактирования шаблона в представлении сетки

Я использую gridview, у которого есть раскрывающийся список в поле edittemplate. В раскрывающемся списке есть 3 элемента списка: красный, янтарный, зеленый. Вместо отображения текста в элементах списка я хочу показать цвета, для того же я использую событие onLoad раскрывающегося списка, однако это событие не может распознать раскрывающийся список. Код конструктора выпадающего списка:

<asp:TemplateField HeaderText="Color">
<EditItemTemplate> 
  <asp:DropDownList ID="ddlcolor" runat="server" AppendDataBoundItems="true" DataTextField="COLOR" DataValueField ="COLOR" OnLoad="DDLColor_Load">
            <asp:ListItem Value="-1">- Select Color -</asp:ListItem>
            <asp:ListItem Value="0">Amber</asp:ListItem>
            <asp:ListItem Value="1">Green</asp:ListItem>
            <asp:ListItem Value="2">Red</asp:ListItem>                
  </asp:DropDownList></EditItemTemplate></asp:TemplateField>

Выпадающий список событий onLoad в коде:

  protected void DDLColor_Load(object sender, EventArgs e)
{

    for (int i = 0; i < ddlcolor.Items.Count; i++)
    {
        ddlcolr.Items[i].Attributes.Add("style", "background-color:" + ddlcolor.Items[i].Text);

    }
} 

Однако он показывает, что раскрывающийся список ddlcolor не существует в текущем контексте. Нужно ли мне найти этот элемент управления в gridview? Пожалуйста, предложите.


person hitesh.gawhade    schedule 29.01.2013    source источник


Ответы (1)


Ты прав. Вам нужно найти контроль. Использование аргумента отправителя поможет вам найти раскрывающийся список без использования метода управления поиском.

 protected void DDLColor_Load(object sender, EventArgs e)
 {
    DropdownList ddlcolr=(Dropdownlist)sender;
for (int i = 0; i < ddlcolor.Items.Count; i++)
  {
    ddlcolr.Items[i].Attributes.Add("style", "background-color:" + ddlcolor.Items[i].Text);

  }
 } 
person Abide Masaraure    schedule 29.01.2013
comment
Правильный. Это сработало для меня. Первый раз использовал аргумент отправителя, не всегда нужно использовать findcontrol. Спасибо. - person hitesh.gawhade; 29.01.2013