1
Answer

The Controls collection cannot be modified because the contr

i am using printclass in my appcode

from code behind printimgbtn click event i am calling static class method which had arguments as contorl and string


this is class code :

public static void PrintWebControl(Control ctrl, string Script)
    {
        //if (System.Web.HttpContext.Current.(string)Session["isgrid"] == "grid")
        //{
        //    GridView grid = (GridView)ctrl;
        //    grid.AllowPaging = false;
        //    grid.DataBind();
        //}


        StringWriter stringWrite = new StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
        if (ctrl is WebControl)
        {
            Unit w = new Unit(100, UnitType.Percentage); ((WebControl)ctrl).Width = w;
        }
        Page pg = new Page();
        pg.EnableEventValidation = false;
        if (Script != string.Empty)
        {
            pg.ClientScript.RegisterStartupScript(pg.GetType(), "PrintJavaScript", Script);
        }
        HtmlForm frm = new HtmlForm();
        pg.Controls.Add(frm);
        frm.Attributes.Add("runat", "server");
        frm.Controls.Add(ctrl);
        pg.DesignerInitialize();
        pg.RenderControl(htmlWrite);
        string strHTML = stringWrite.ToString();
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.Write(strHTML);
        HttpContext.Current.Response.Write("<script>window.print();</script>");
        HttpContext.Current.Response.End();
    }

code behind code : 

protected void btnPrint_Click(object sender, ImageClickEventArgs e)
{
    
    PrintHelper.PrintWebControl(PnlExportButtons0,string.Empty);
}

but it is showing the error  :

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>)

Answers (1)