1

DropDownListを拡張してListSearchExtenderを追加したいと思います。

以下のコードを使用すると、コントロールは実行時に正常に機能しますが、設計時には次のエラーが発生します。

SearchDropDownList-DdlTestコントロールのレンダリング中にエラーが発生しました。ページをnullにすることはできません。この操作が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);
    }
}
4

1 に答える 1

1

私は簡単な方法でそれを手に入れましたそれが将来問題になるかどうかはわかりませんが、今のところうまくいきます

    protected override void Render(HtmlTextWriter w)
    {
        base.Render(w);
        if (!this.DesignMode)
        {
            listSearchExt.RenderControl(w);
        }
    }
于 2012-09-25T12:46:41.373 に答える