在渲染之前从转发器中删除控制

时间:2012-03-01 07:21:58

标签: asp.net

我想在渲染我尝试将转发器控件导出为ex​​cel之前从转发器控件中删除隐藏的字段控件

StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
Repeater newrpt = (Repeater)Cache["Report"];

//remove hidden field from newrpt 
newrpt.RenderControl(htw);

这是我的代码。我需要删除,因为我收到错误Control 'ctl00_ContentPlaceHolder1_rptSafetyIndicator_ctl01_hidSIId' of type 'HiddenField' must be placed inside a form tag with runat=server.

1 个答案:

答案 0 :(得分:1)

您可以在数据绑定

后从ItemTemplate中删除任何控件
    repeater.ItemDataBound += delegate(object sender, RepeaterItemEventArgs ev)
    {
        var hf = ev.Item.FindControl("hidSIId");
        ev.Item.Controls.Remove(hf);
    };

但我认为主要的问题是,你在模板控件上调用RenderControl,它必须放在FORM控件中。您可以通过覆盖Page.VerifyRenderingInServerForm

来解决此错误

Look here for example

相关问题