【问题标题】:Not able to access edit template field dropdownlist in gridview无法访问gridview中的编辑模板字段下拉列表
【发布时间】:2013-01-29 07:27:40
【问题描述】:

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

【问题讨论】:

    标签: asp.net gridview templatefield


    【解决方案1】:

    你是对的。你需要找到控制。使用 sender 参数将帮助您在不使用查找控件方法的情况下定位下拉列表

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

    【讨论】:

    • 正确。它对我来说很好。第一次使用 sender 参数,不必总是使用 findcontrol。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多