扩展DropDownList以添加ListSearchExtender

时间:2012-09-21 17:49:50

标签: extend html.dropdownlistfor

我想扩展DropDownList以添加ListSearchExtender。

使用下面的代码,控件在运行时运行良好,但在设计时它会给我这个错误:

  

SearchDropDownList - DdlTest渲染时出错   控制。页面不能为空。请确保此操作   在ASP.NET请求的上下文中执行。

我想了解这个错误的原因。

[ToolboxData("<{0}:SearchDropDownList runat=\"server\"></{0}:SearchDropDownList>")]
public class SearchDropDownList : DropDownList
{
    private ListSearchExtender listSearchExt = new ListSearchExtender();
    protected override void OnInit(EventArgs e)
    {
        ReloadSettings();
    }

    protected override void Render(HtmlTextWriter w)
    {
        base.Render(w);
        listSearchExt.RenderControl(w);
    }

    public void ReloadSettings()
    {
        listSearchExt.TargetControlID = this.ID;
        listSearchExt.ID = this.ID + "_CalendarExtender";

        if (Controls.Count > 0)
        {
            foreach (Control item in Controls)
            {
                if (item.ID == listSearchExt.ID)
                {
                    Controls.Remove(item);
                }
            }
        }
        Controls.Add(listSearchExt);
    }
}

1 个答案:

答案 0 :(得分:1)

我通过简单的方式得到它我不确定它是否会在将来出现问题,但现在它运作良好

    protected override void Render(HtmlTextWriter w)
    {
        base.Render(w);
        if (!this.DesignMode)
        {
            listSearchExt.RenderControl(w);
        }
    }