1

我正在使用一个 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 中找到这个控件吗?请建议。

4

1 回答 1

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

  }
 } 
于 2013-01-29T07:52:29.247 回答