问题描述
|
我正在尝试创建一个自定义控件,并且render方法如下所示。
我在bulletList.RenderControl(Writer);上收到一个“对象引用未设置为对象的实例”错误;线。
有任何想法吗?
protected override void Render(HtmlTextWriter Writer)
{
if (TermSetList != null && TermSetList.Count > 0)
{
BulletedList bulletList = new BulletedList();
bulletList.Click += new BulletedListEventHandler(BulletListItem_Click);
bulletList.displayMode = BulletedListdisplayMode.LinkButton;
bulletList.CssClass = \"tabs\";
foreach (keyvaluePair<String,String> item in TermSetList)
{
ListItem listItem = new ListItem();
listItem.Text = item.Key;
listItem.Value = item.Value;
bulletList.Items.Add(listItem);
}
if (!this.Page.IsPostBack)
{
bulletList.Items[0].Selected = true;
}
bulletList.RenderControl(Writer);
base.Render(Writer);
}
}
解决方法
通常,您不想在渲染过程中添加控件。您当前的操作方式将确保您的点击处理程序永远不会被调用。
我对为什么会收到错误的猜测是,该控件尚未添加到控件集合中。
我的建议是将逻辑移至更早的事件,也许是onload,那么您就不必重写Render方法。