无法访问gridview中的编辑模板字段下拉列表

时间:2013-01-29 07:27:40

标签: asp.net gridview templatefield

我正在使用gridview,它在edittemplate字段中有下拉列表。下拉列表中有3个列表项:红色,琥珀色,绿色。我想显示颜色,而不是在listitems中显示文本,因为我使用dropdownlist的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>

代码行间中的Dropdownlist 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中找到此控件吗?请建议。

1 个答案:

答案 0 :(得分:2)

你是对的。你需要找到控件。使用sender参数将帮助您找到下拉列表而不使用find控制方法

 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);

  }
 }