在自定义控件中渲染LinkBut​​ton

时间:2012-11-22 14:27:07

标签: c# asp.net

我正在使用这样的标记创建自定义控件:

<Custom:CustomGrid>
    <Columns>
        <Custom:DataColumn HeaderText="FirstName" />
        <Custom:DataColumn HeaderText="LastName" />
    </Columns>
</Custom:CustomGrid>

我重写了Render和RenderChildren,以便分别渲染外部Div / Table和Column标记。

我希望每个TH都包含一个LinkBut​​ton,HeaderText用于排序。我创建了一个foreach循环来遍历列的集合,并为每个列创建一个TH,其中包含一个LinkBut​​ton。我使用linkBtn.RenderControl(writer);

渲染LinkBut​​ton

我在html中获得的只是一个空锚标记。 我猜这是因为asp.net不知道在以这种方式渲染时渲染服务器控件的JS端。 但我不知道我能以不同的方式做些什么。 有什么想法吗?

编辑:我可以看到href =“javascript:_doPostBack('myGrid $ Sort_firstName','')” 被建造。我不知道为什么这些字符是html转义的,但我猜它只是html源代码查看器(或者可能不是......)无论如何,事件处理程序仍然没有被触发。

1 个答案:

答案 0 :(得分:0)

事实证明CreateChildControls不是创建子控件的地方......(谁会想要它......)

我移动代码将控件添加到OnInit的控件集合中,并且所有内容都已正确完成。

原来在回发的生命周期中调用CreateChildControls太晚,无法正确路由事件。