【问题标题】:Render LinkButton in custom control在自定义控件中渲染 LinkBut​​ton
【发布时间】:2012-11-22 14:27:07
【问题描述】:

我正在创建一个带有如下标记的自定义控件:

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

为了分别渲染外部的 Div/Table 和 Column 标签,我将覆盖 Render 和 RenderChildren。

我希望每个 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源查看器(或者可能不是......)无论如何,事件处理程序仍然没有被触发。

【问题讨论】:

  • 你能发布你用来尝试这个的实际代码吗?

标签: c# asp.net


【解决方案1】:

原来 CreateChildControls 不是创建子控件的地方...(谁会想它...)

我将将控件添加到控件集合的代码移到 OnInit 中,一切都已正确运行。

事实证明,在生命周期中调用 CreateChildControls 为时已晚,以至于回发无法正确路由事件。

【讨论】:

    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多