PDA

View Full Version : چطور این خطا رو رفع کنم؟(لطفا کمکم کنید.)



minamorsali
چهارشنبه 04 شهریور 1388, 11:10 صبح
سلام
ببخشید در هنگام اجرای برنامه ام ، به ارور زیر برخوردم. این ارور رو چطوری رفع کنم؟
این ارور مربوط به چی میشه؟
خواهش می کنم کمکم کنید.

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

persianspam
چهارشنبه 04 شهریور 1388, 12:31 عصر
از صفحه اررور یه عکس بگیر تا بهتر بتونیم راهنماییتون کنیم دوست من

minamorsali
چهارشنبه 04 شهریور 1388, 15:13 عصر
از صفحه اررور یه عکس بگیر تا بهتر بتونیم راهنماییتون کنیم دوست من
از صفحه ارور عکس گرفتم. و ضمیمه کردم. ممنون میشم اگه راهنماییم کنید.
با تشکر

مهدی کرامتی
چهارشنبه 04 شهریور 1388, 21:39 عصر
سورس کدی که باعث این خطا میشه رو اینجا بنویسید.

بنظر میرسه شما دارید یک فرم رو به صفحه اضافه می کنید، در حالی که صفحه خودش یک فرم داره.

minamorsali
پنج شنبه 05 شهریور 1388, 00:05 صبح
من از تابع printhelper که خانم bahar_enginer در سایت گذاشتن برای پرینت از محتوای یک پنل که حاوی یک گرید ویوو است،استفاده می کنم:


publicstaticvoid PrintWebControl(Control ctrl, string Script)
{
StringWriter stringWrite = newStringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
if (ctrl isWebControl)
{
Unit w = newUnit(100, UnitType.Percentage); ((WebControl)ctrl).Width = w;
}
Page pg = newPage();
pg.EnableEventValidation = false;
if (Script != string.Empty)
{
pg.ClientScript.RegisterStartupScript(pg.GetType() , "PrintJavaScript", Script);
}
HtmlForm frm = newHtmlForm();
Panel pnl = newPanel();
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();
}


اما در خط زیر ارور میده:

frm.Controls.Add(ctrl);

من این تابع رو در رویداد کلیک image button ام فراخوانی می کنم:


Session["ctrl"] = Panel1;
Control ctrl = (Control)Session["ctrl"];
PrintHelper.PrintWebControl(ctrl);


و در سورس همین صفحه (که یک صفحه ascx است) یک اسکریپت هم جهت پرینت استفاده کردم:


<scriptlanguage="javascript"type="text/javascript">

<!--
function imgbtnPrint_onclick() {
//open new window set the height and width =0,set windows position at bottom
var a = window.open ('','','left =' + screen.width + ',top=' + screen.height + ',width=0,height=0,toolbar=0,scrollbars=0,status=0 ');
//write gridview data into newly open window
a.document.write(document.getElementById('<%= GridView1.ClientID %>').innerHTML);
a.document.close();
a.focus();
//call print
a.print();
a.close();
returnfalse;
}
// -->

</script>


و یک صفحه پرینت هم دارم که در رویداد لودش، دستور زیر رو نوشتم:


Control ctrl = (Control)Session["ctrl"];
PrintHelper.PrintWebControl(ctrl);


امیدوارم منظورمو درست رسونده باشم. اگه نه، بگین تا صفحه کدم رو بذارم.
ممنون میشم اگه راهنماییم کنید.
با تشکر فراوان

minamorsali
پنج شنبه 05 شهریور 1388, 09:17 صبح
خودم تونستم ارورش رو برطرف کنم. البته به کمک سایت msdn.microsoft.com
در جایی که اسکریپت می نویسم، به جای دستور

<%= GridView1.ClientID %>


دستور زیر رو نوشتم:


<%# GridView1.ClientID %>


ارور برطرف شد.