我正在尝试创建自定义控件,渲染方法如下所示。
我在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);
}
}
答案 0 :(得分:1)
您通常不希望在渲染过程中添加控件。您目前这样做的方式将确保您的点击处理程序永远不会被调用。
我猜测你收到错误的原因是控件没有被添加到控件集合中。
我的建议是将逻辑移动到更早的事件,也许是onload,然后你不需要覆盖Render方法。