Здравствуйте!
Возникла такая ситуация:
Есть базовый класс для всех страниц
есть страница
на странице распологаеться usercontrol, в контроле GridView, который при Page_Load заполняеться данными,
сразу же после заполнения грида
вызываю метод SendMail, в которм вызываю метод GridViewToHtml
вот его код:
хочеться грид вставить в письмо.
Получаю ошибку:
Еще к этому добавлю, что в CTOPage добавил:
Подскажите, пожалуйста как решить?
Сделал тестовый проэкт без битрикса, все работает нормально, а под битрикс ошибка.
Возникла такая ситуация:
Есть базовый класс для всех страниц
Код |
---|
public class CTOPage : BXPublicPage |
есть страница
Код |
---|
public partial class NoticePage : CTOPage |
на странице распологаеться usercontrol, в контроле GridView, который при Page_Load заполняеться данными,
сразу же после заполнения грида
Код |
---|
GridView1.DataSource = GetData(); GridView1.DataBind(); |
вызываю метод SendMail, в которм вызываю метод GridViewToHtml
Код |
---|
try { grid = GridViewToHtml(GridView1); } catch(Exception e) { ErrHandler.WriteTest("Test grid error - "+e.ToString()); } |
вот его код:
Код |
---|
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(); |
хочеться грид вставить в письмо.
Получаю ошибку:
Цитата |
---|
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 |
Еще к этому добавлю, что в CTOPage добавил:
Код |
---|
public override void VerifyRenderingInServerForm(Control control) { GridView grid = control as GridView; if (grid != null && grid.ID == "GridView1") return; else base.VerifyRenderingInServerForm(control); } |
Подскажите, пожалуйста как решить?
Сделал тестовый проэкт без битрикса, все работает нормально, а под битрикс ошибка.