Здравствуйте!
Возникла такая ситуация:
Есть базовый класс для всех страниц
[CODE]public class CTOPage : BXPublicPage[/CODE]
есть страница
[CODE]public partial class NoticePage : CTOPage[/CODE]
на странице распологаеться usercontrol, в контроле GridView, который при Page_Load заполняеться данными,
сразу же после заполнения грида
[CODE]GridView1.DataSource = GetData();
GridView1.DataBind();[/CODE]
вызываю метод SendMail, в которм вызываю метод GridViewToHtml
[CODE] try
{
grid = GridViewToHtml(GridView1);
}
catch(Exception e)
{
ErrHandler.WriteTest("Test grid error - "+e.ToString());
}[/CODE]
вот его код:
[CODE]CTOPage tmpPage = new CTOPage();
HtmlForm form = new HtmlForm();
form.Controls.Add(gv);
tmpPage.Controls.Add(form);
StringWriter sw = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(sw);
form.Controls[0].RenderControl(htmlWriter);
return sw.ToString();[/CODE]
хочеться грид вставить в письмо.
Получаю ошибку:
[QUOTE]Text Test grid error - System.Web.HttpException: Невозможно изменить коллекцию Controls, так как элемент управления содержит блоки кода (т.е. <% ... %>).
в System.Web.UI.ControlCollection.RemoveAt(Int32 index)
в System.Web.UI.ControlCollection.Remove(Control value)
в System.Web.UI.Control.AddedControl(Control control, Int32 index)
в System.Web.UI.ControlCollection.Add(Control child)
в CTO.UserNotice.GridViewToHtml(GridView gv) в D:\CTO_Bitrix\CTO\UserNotice.ascx.cs:строка 360
в CTO.UserNotice.SendMail(String pass, String date, String num, String summ) в D:\CTO_Bitrix\CTO\UserNotice.ascx.cs:строка 151 [/QUOTE]
Еще к этому добавлю, что в CTOPage добавил:
[CODE] public override void VerifyRenderingInServerForm(Control control)
{
GridView grid = control as GridView;
if (grid != null && grid.ID == "GridView1")
return;
else
base.VerifyRenderingInServerForm(control);
}[/CODE]
Подскажите, пожалуйста как решить?
Сделал тестовый проэкт без битрикса, все работает нормально, а под битрикс ошибка.
Возникла такая ситуация:
Есть базовый класс для всех страниц
[CODE]public class CTOPage : BXPublicPage[/CODE]
есть страница
[CODE]public partial class NoticePage : CTOPage[/CODE]
на странице распологаеться usercontrol, в контроле GridView, который при Page_Load заполняеться данными,
сразу же после заполнения грида
[CODE]GridView1.DataSource = GetData();
GridView1.DataBind();[/CODE]
вызываю метод SendMail, в которм вызываю метод GridViewToHtml
[CODE] try
{
grid = GridViewToHtml(GridView1);
}
catch(Exception e)
{
ErrHandler.WriteTest("Test grid error - "+e.ToString());
}[/CODE]
вот его код:
[CODE]CTOPage tmpPage = new CTOPage();
HtmlForm form = new HtmlForm();
form.Controls.Add(gv);
tmpPage.Controls.Add(form);
StringWriter sw = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(sw);
form.Controls[0].RenderControl(htmlWriter);
return sw.ToString();[/CODE]
хочеться грид вставить в письмо.
Получаю ошибку:
[QUOTE]Text Test grid error - System.Web.HttpException: Невозможно изменить коллекцию Controls, так как элемент управления содержит блоки кода (т.е. <% ... %>).
в System.Web.UI.ControlCollection.RemoveAt(Int32 index)
в System.Web.UI.ControlCollection.Remove(Control value)
в System.Web.UI.Control.AddedControl(Control control, Int32 index)
в System.Web.UI.ControlCollection.Add(Control child)
в CTO.UserNotice.GridViewToHtml(GridView gv) в D:\CTO_Bitrix\CTO\UserNotice.ascx.cs:строка 360
в CTO.UserNotice.SendMail(String pass, String date, String num, String summ) в D:\CTO_Bitrix\CTO\UserNotice.ascx.cs:строка 151 [/QUOTE]
Еще к этому добавлю, что в CTOPage добавил:
[CODE] public override void VerifyRenderingInServerForm(Control control)
{
GridView grid = control as GridView;
if (grid != null && grid.ID == "GridView1")
return;
else
base.VerifyRenderingInServerForm(control);
}[/CODE]
Подскажите, пожалуйста как решить?
Сделал тестовый проэкт без битрикса, все работает нормально, а под битрикс ошибка.