我正在使用这样的标记创建自定义控件:
<Custom:CustomGrid>
<Columns>
<Custom:DataColumn HeaderText="FirstName" />
<Custom:DataColumn HeaderText="LastName" />
</Columns>
</Custom:CustomGrid>
我重写了Render和RenderChildren,以便分别渲染外部Div / Table和Column标记。
我希望每个TH都包含一个LinkButton,HeaderText
用于排序。我创建了一个foreach
循环来遍历列的集合,并为每个列创建一个TH,其中包含一个LinkButton。我使用linkBtn.RenderControl(writer);
我在html中获得的只是一个空锚标记。 我猜这是因为asp.net不知道在以这种方式渲染时渲染服务器控件的JS端。 但我不知道我能以不同的方式做些什么。 有什么想法吗?
编辑:我可以看到href =“javascript:_doPostBack('myGrid $ Sort_firstName','')” 被建造。我不知道为什么这些字符是html转义的,但我猜它只是html源代码查看器(或者可能不是......)无论如何,事件处理程序仍然没有被触发。
答案 0 :(得分:0)
事实证明CreateChildControls不是创建子控件的地方......(谁会想要它......)
我移动代码将控件添加到OnInit的控件集合中,并且所有内容都已正确完成。
原来在回发的生命周期中调用CreateChildControls太晚,无法正确路由事件。