anurag19289 Ответов: 4

gridview, чтобы преуспеть в asp.net


--у меня есть две пуговицы
1)Поиск
2)ExportToExcel

при поиске я получу данные в gridview

на ExportToExcel данные будут находиться в Excel

Поиск работает нормально,

Код ExportToExcel выглядит следующим образом
protected void ExportToExcel_Click(object sender, EventArgs e)
    {
        Response.ClearContent();
        Response.AppendHeader("content-disposition","attachment;filename=Importeduserschedule.xls");
        Response.ContentType="application/excel";

        StringWriter stringwriter = new StringWriter();
        HtmlTextWriter htmltextwriter =new HtmlTextWriter(stringwriter);

        gvImported_Users.RenderControl(htmltextwriter);
        Response.Write(stringwriter.ToString());
        Response.End();
    }
    public override void VerifyRenderingInServerForm(Control control)
    {        
    }

Все кажется прекрасным,но я получаю ошибку, как это
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near '<div>
	<table class=".</xml>"></table></div>


---только что я попытался включить его в блок try catch
protected void ExportToExcel_Click(object sender, EventArgs e)
    {
        try
        {
            Response.ClearContent();
            Response.AppendHeader("content-disposition", "attachment;filename=Importeduserschedule.xls");
            Response.ContentType = "application/excel";

            StringWriter stringwriter = new StringWriter();
            HtmlTextWriter htmltextwriter = new HtmlTextWriter(stringwriter);

            gvImported_Users.RenderControl(htmltextwriter);
            Response.Write(stringwriter.ToString());
            Response.End();
        }
        catch(Exception ex)
        {
            LogError.WriteError(ex);        
        }
    }

Он идет в блок улова.Что мне нравится

unable to evaluate expression as the code is optimized or native frame is on top of the call stack


-------------------спасибо за ваш комнет, он почти на 90 % завершен----------------последняя помощь требуется----
--в моей загрузке страницы я добавил часть scriptmanager

охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{
Элемента управления scriptmanager элемента управления scriptmanager = элемента управления scriptmanager.GetCurrent(this.Page);
элемента управления scriptmanager.RegisterPostBackControl(this.btnexportToExcel);
пробовать
{

//intRoleId = преобразовать.ToInt32(сессия[TMS.Common.Общие константы.CONST_ROLE_ID]);
strMainPage = запрос.Файл querystring["IS_MAINPAGE"];
if (!IsPostBack)
{
txt_From_date.Text = (DateTime.Сегодня.Дата).ToShortDateString() + '' + (DateTime.Сегодня.Дата).AddHours(00).AddMinutes(00).Тошорттиместринг();
txt_To_date.Text = (DateTime.Сегодня.Дата).ToShortDateString() + '' + (DateTime.Сегодня.Дата).AddHours(23).AddMinutes(59).Тошорттиместринг();
intRoleId = конвертировать.ToInt32(сессия[TMS.Common.Общие константы.CONST_ROLE_ID]);
if (intRoleId == Convert.ToInt16(TMS.Common.Общие константы.CONST_TRANSPORT_LOCAL_ROLEID))
{
ControlBinding.FillCombo(ddl_Hub, "HUB_MASTER", Session[TMS.Common.Общие константы.CONST_COMPANY_ID].Метод toString(), сессия[ТМС.Общие.Общие константы.CONST_USER_HUB_ID].Метод toString(), сессия[ТМС.Общие.Общие константы.CONST_USER_ID].Метод toString(), "", "", "", ложные);
ddl_Hub.SelectedValue = сессии[ТМС.Общие.Общие константы.CONST_USER_HUB_ID].Метод toString();
ddl_Hub.Включен = ложь;
}
еще
{
ControlBinding.FillCombo(ddl_Hub, "ASSOCIATED_HUBS", Session[TMS.Common.Общие константы.CONST_COMPANY_ID].Метод toString(), сессия[ТМС.Общие.Общие константы.CONST_USER_HUB_ID].Метод toString(), сессия[ТМС.Общие.Общие константы.CONST_USER_ID].Метод toString(), "", "", "", ложные);
}
}
// RoleBasedSecurity();

}
поймать (исключение бывший)
{
LogError.WriteError(ex);
}
}


----если я отлаживаю ,,,,то он, наконец, переходит к HeaderHTML, который объявлен на моей странице aspx-----------------------------------------
</head>
<%HeaderHTML("импортированные сведения о расписании пользователей", 2, 0);
%>

---после того, как он перейдет в HeaderHTML на моей странице aspx----он идет сюда-------------------------------


охраняемых недействительными HeaderHTML(строку название страницы, folderLevel инт, инт isPopup)
{
StringBuilder objStringBuilder = новый StringBuilder();
пробовать
{
переключатель (folderLevel)
{
случай 0:
strFolderLevel = "";
перерыв;
корпус 1:
strFolderLevel = "../";
перерыв;
случай 2:
strFolderLevel = "../../";
перерыв;
случай 3:
strFolderLevel = "../../../";
перерыв;
случай 4:
strFolderLevel = "../../../../";
перерыв;
}
objStringBuilder.Добавить("&ЛТ;выбор целевых='отдел обслуживания клиентов Tel'/&ГТ;&ЛТ;глава&ГТ;&ЛТ;титул&ГТ;Транспортал :: ");
objStringBuilder.Добавить(pageTitle);
objStringBuilder.Добавить("</title>");
objStringBuilder.Добавить("\n<META Http-Equiv='Cache-Control' Content='no-cache'>");
objStringBuilder.Функции append("\п<мета НТТР-экв контент='Прагма'='нет-кэша в'>");
objStringBuilder.Append("\n<META Http-Equiv='Expires' Content='0'>");
objStringBuilder.Функции append("\п<мета имя= "ключевые слова" содержание='Транспортал, транспорт, системы управления, работников системы управления, маршрут, двигатель, управление автопарком, маршрутизация, веб-работника системы управления, планирование маршрута'&ГТ;");
objStringBuilder.Append("\n<meta name='description' content='Transportal-это полностью автоматизированное веб-решение для транспортировки сотрудников в интеграции с программным обеспечением Infor Route Planning Software" >");
objStringBuilder.Добавить("\n<meta name='author' content='HCL Technologies'>");
objStringBuilder.Функции append("\п<мета имя= "роботов" содержание= " все " и GT;");
objStringBuilder.Append("\n<meta name='copyright' content=март 2009 года>");
objStringBuilder.Добавить("<link href='");
objStringBuilder.Добавить(strFolderLevel);
если (isPopup == 1)
{
objStringBuilder.Append("Utility/Style/TMS.css' type='text/css' rel='stylesheet'>");
}
еще
{
objStringBuilder.Append("Utility/Style/TMS.css' type='text/css' rel='stylesheet'>");
}
objStringBuilder.Добавить("<script language='javascript' src='");
objStringBuilder.Добавить(strFolderLevel);
objStringBuilder.Добавить("Utility/JavaScript/commonFunctions.js'></script>");
objStringBuilder.Добавить("<script language='javascript' src='");
objStringBuilder.Добавить(strFolderLevel);
objStringBuilder.Добавить("Utility/JavaScript/CastleBusyBox.js'></script>");
//objStringBuilder.Функции append("\п<язык скриптов='JavaScript-код в'>окно.статус='" + с именем pagetitle + "в'</скрипт>");
//objStringBuilder.Функции append("\п<iframe в код='BusyBoxIFrame' имя='BusyBoxIFrame' frameBorder='0' прокрутки= " нет " öndrop='вернет false;'&ГТ;&ЛТ;/iframe и GT и GT;");
//objStringBuilder.Append("\n<SCRIPT>try{window.opener.document.getElementById('AlertDiv').style.display='hidden';}catch(e){} var busyBox = new BusyBox('BusyBoxIFrame', 'busyBox', 4, 'gears_ani_', '.gif', 125, 308, 172, 'BusyBox.htm') </SCRIPT>");
objStringBuilder.Добавить("\n</head>");
//записывает заголовок HTML
Ответ.Write(objStringBuilder.Метод toString());
SetScreenMessages();
}
catch (исключение e)
{
}
наконец
{
objStringBuilder = нуль;
}
}

------------------------------------------------------------------------------------
Я получаю excelsheet всплывает
Но я получаю всплывающее окно после открытия excel
--проблемы во время загрузки страниц
отсутствует файл local settings\style.css
отсутствующий файл ..............................................................css
отсутствует файл .в CSS
отсутствующий файл ..............................................................css
Наконец excel открывается
Я получаю всю таблицу на всей странице
И ниже фактические данные существуют[которые мне нужны]
Но я не хочу, чтобы все детали этой страницы,,,я только хочу, чтобы griddetails

4 Ответов

Рейтинг:
2

abhinavpratap

Ошибка:
невозможно вычислить выражение, так как код оптимизирован или собственный фрейм находится поверх стека вызовов

Это происходит из-за Response.End() внутри блока try catch
Проверять : http://forums.asp.net/t/1488928.aspx[^]

Ошибка:
Представление sys.Веб-формы.Исключение PageRequestManagerParserErrorException: сообщение, полученное с сервера, не может быть проанализировано. Распространенные причины этой ошибки заключаются в том, что ответ изменяется вызовами ответа.Включена функция Write(), фильтры ответов, HttpModules или трассировка сервера.

Это происходит из-за панели Ajax request /update
Проверять :http://stackoverflow.com/questions/11221033/sys-webforms-pagerequestmanagerparsererrorexception-the-message-received-from-t[^]

http://stackoverflow.com/questions/1554728/the-message-received-from-the-server-could-not-be-parsed-common-causes-for-this[^]


anurag19289

--это почти завершено, но ... .

- охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{
Элемента управления scriptmanager элемента управления scriptmanager = элемента управления scriptmanager.GetCurrent(this.Page);
элемента управления scriptmanager.RegisterPostBackControl(this.btnexportToExcel);
пробовать
{



//intRoleId = преобразовать.ToInt32(сессия[TMS.Common.Общие константы.CONST_ROLE_ID]);
strMainPage = запрос.Файл querystring["IS_MAINPAGE"];
if (!IsPostBack)
{
txt_From_date.Text = (DateTime.Сегодня.Дата).ToShortDateString() + '' + (DateTime.Сегодня.Дата).AddHours(00).AddMinutes(00).Тошорттиместринг();
txt_To_date.Text = (DateTime.Сегодня.Дата).ToShortDateString() + '' + (DateTime.Сегодня.Дата).AddHours(23).AddMinutes(59).Тошорттиместринг();
intRoleId = конвертировать.ToInt32(сессия[TMS.Common.Общие константы.CONST_ROLE_ID]);
if (intRoleId == Convert.ToInt16(TMS.Common.Общие константы.CONST_TRANSPORT_LOCAL_ROLEID))
{
ControlBinding.FillCombo(ddl_Hub, "HUB_MASTER", Session[TMS.Common.Общие константы.CONST_COMPANY_ID].Метод toString(), сессия[ТМС.Общие.Общие константы.CONST_USER_HUB_ID].Метод toString(), сессия[ТМС.Общие.Общие константы.CONST_USER_ID].Метод toString(), "", "", "", ложные);
ddl_Hub.SelectedValue = сессии[ТМС.Общие.Общие константы.CONST_USER_HUB_ID].Метод toString();
ddl_Hub.Включен = ложь;
}
еще
{
ControlBinding.FillCombo(ddl_Hub, "ASSOCIATED_HUBS", Session[TMS.Common.Общие константы.CONST_COMPANY_ID].Метод toString(), сессия[ТМС.Общие.Общие константы.CONST_USER_HUB_ID].Метод toString(), сессия[ТМС.Общие.Общие константы.CONST_USER_ID].Метод toString(), "", "", "", ложные);

}
}
// RoleBasedSecurity();

}
поймать (исключение бывший)
{
LogError.WriteError(ex);
}
}


</head>
<%HeaderHTML("импортированные сведения о расписании пользователей", 2, 0);
%>
охраняемых недействительными HeaderHTML(строку название страницы, folderLevel инт, инт isPopup)
{
StringBuilder objStringBuilder = новый StringBuilder();
пробовать
{
переключатель (folderLevel)
{
случай 0:
strFolderLevel = "";
перерыв;
корпус 1:
strFolderLevel = "../";
перерыв;
случай 2:
strFolderLevel = "../../";
перерыв;
случай 3:
strFolderLevel = "../../../";
перерыв;
случай 4:
strFolderLevel = "../../../../";
перерыв;
}
objStringBuilder.Добавить("&ЛТ;выбор целевых='отдел обслуживания клиентов Tel'/&ГТ;&ЛТ;глава&ГТ;&ЛТ;титул&ГТ;Транспортал :: ");
objStringBuilder.Добавить(pageTitle);
objStringBuilder.Добавить("</title>");
objStringBuilder.Добавить("\n<META Http-Equiv='Cache-Control' Content='no-cache'>");
objStringBuilder.Функции append("\п<мета НТТР-экв контент='Прагма'='нет-кэша в'>");
objStringBuilder.Append("\n<META Http-Equiv='Expires' Content='0'>");
objStringBuilder.Функции append("\п<мета имя= "ключевые слова" содержание='Транспортал, транспорт, системы управления, работников системы управления, маршрут, двигатель, управление автопарком, маршрутизация, веб-работника системы управления, планирование маршрута'&ГТ;");
objStringBuilder.Append("\n<meta name='description' content='Transportal-это полностью автоматизированное веб-решение для транспортировки сотрудников в интеграции с программным обеспечением Infor Route Planning Software" >");
objStringBuilder.Добавить("\n<meta name='author' content='HCL Technologies'>");
objStringBuilder.Функции append("\п<мета имя= "роботов" содержание= " все " и GT;");

anurag19289

objStringBuilder.Append("\n<meta name='copyright' content=март 2009 года>");
objStringBuilder.Добавить("<link href='");
objStringBuilder.Добавить(strFolderLevel);
если (isPopup == 1)
{
objStringBuilder.Append("Utility/Style/TMS.css' type='text/css' rel='stylesheet'>");
}
еще
{
objStringBuilder.Append("Utility/Style/TMS.css' type='text/css' rel='stylesheet'>");
}
objStringBuilder.Добавить("<script language='javascript' src='");
objStringBuilder.Добавить(strFolderLevel);
objStringBuilder.Добавить("Utility/JavaScript/commonFunctions.js'></script>");
objStringBuilder.Добавить("<script language='javascript' src='");
objStringBuilder.Добавить(strFolderLevel);
objStringBuilder.Добавить("Utility/JavaScript/CastleBusyBox.js'></script>");
//objStringBuilder.Функции append("\п<язык скриптов='JavaScript-код в'>окно.статус='" + с именем pagetitle + "в'</скрипт>");
//objStringBuilder.Функции append("\п<iframe в код='BusyBoxIFrame' имя='BusyBoxIFrame' frameBorder='0' прокрутки= " нет " öndrop='вернет false;'&ГТ;&ЛТ;/iframe и GT и GT;");
//objStringBuilder.Append("\n<SCRIPT>try{window.opener.document.getElementById('AlertDiv').style.display='hidden';}catch(e){} var busyBox = new BusyBox('BusyBoxIFrame', 'busyBox', 4, 'gears_ani_', '.gif', 125, 308, 172, 'BusyBox.htm') </SCRIPT>");
objStringBuilder.Добавить("\n</head>");
//записывает заголовок HTML
Ответ.Write(objStringBuilder.Метод toString());
SetScreenMessages();
}
catch (исключение e)
{
}
наконец
{
objStringBuilder = нуль;
}
}
Я получаю excelsheet всплывает

Но я получаю всплывающее окно после открытия excel

--проблемы во время загрузки страниц
отсутствует файл local settings\style.css
отсутствующий файл ..............................................................css
отсутствует файл .в CSS
отсутствующий файл ..............................................................css

Наконец excel открывается

Я получаю всю таблицу на всей странице

И ниже фактические данные существуют[которые мне нужны]

Но я не хочу, чтобы все детали этой страницы,,,я только хочу, чтобы griddetails

Рейтинг:
1

Shajahan Sherafudeen

Следующая справка по экспорту данных из Gridview в Excel.

HttpContext.Current.Response.Clear();
       HttpContext.Current.Response.ClearContent();
       HttpContext.Current.Response.ClearHeaders();
       HttpContext.Current.Response.Buffer = true;
       HttpContext.Current.Response.ContentType = "application/ms-excel";

       HttpContext.Current.Response.Write(@");
       HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=Reports.xls");
       HttpContext.Current.Response.Charset = "utf-8";
       HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");

       HttpContext.Current.Response.Write("<font style="font-size:10.0pt; font-family:Calibri;">");
       HttpContext.Current.Response.Write("<br><br><br>");
       //sets the table border, cell spacing, border color, font of the text, background, foreground, font height
       HttpContext.Current.Response.Write("<table border="1" bgcolor="#ffffff" hold=" />          " bordercolor="#000000" cellspacing="0" cellpadding="0" style="font-size:10.0pt; font-family:Calibri; background:white;"> <tr>");
       //am getting my grid's column headers
       int columnscount = GridView.Columns.Count;

       for (int j = 0; j < columnscount - 1; j++)
       {      //write in new column
           HttpContext.Current.Response.Write("<td align="centre">");
           //Get column headers  and make it as bold in excel columns
           HttpContext.Current.Response.Write("");
           HttpContext.Current.Response.Write(GridView.Columns[j].HeaderText.ToString());
           HttpContext.Current.Response.Write("");
           HttpContext.Current.Response.Write("</td>");
       }
       HttpContext.Current.Response.Write("</tr>");
       foreach (DataRow row in table.Rows)
       {//write in new row
           HttpContext.Current.Response.Write("<tr>");
           for (int i = 0; i < table.Columns.Count; i++)
           {
               HttpContext.Current.Response.Write("<td align="left">");
               HttpContext.Current.Response.Write(row[i].ToString());
               HttpContext.Current.Response.Write("</td>");
           }

           HttpContext.Current.Response.Write("</tr>");
       }
       HttpContext.Current.Response.Write("</table>");
       HttpContext.Current.Response.Write("</br></br></br></font>");
       HttpContext.Current.Response.Flush();
       HttpContext.Current.Response.End();


anurag19289

у меня есть еще одна проблема....я отредактировал и улучшил вопрос ,,,,помогите мне в этом случае,,,,

Рейтинг:
0

anurag19289

привет-

брат я попробовал это сделать

охраняемых недействительными ExportToExcel_Click(объект отправителя, EventArgs в электронной)
{
пробовать
{

Ответ.ClearContent();
Ответ.AppendHeader("content-disposition", "attachment;filename=Importeduserschedule.xls");
Ответ.ContentType = "приложение/excel";


Stringwriter не stringwriter не = новый stringwriter не();
HtmlTextWriter htmltextwriter = новый HtmlTextWriter(stringwriter);

gvImported_Users.RenderControl(htmltextwriter);
Ответ.Write(stringwriter.Метод toString());
//Ответ.Конец();

Свойство HttpContext.Тока.ApplicationInstance.CompleteRequest();
}

поймать(исключение бывший)
{

LogError.WriteError(ex);

}
}


--есть ошибка

Ошибка выполнения Microsoft JScript: Sys.WebForms.Исключение PageRequestManagerParserErrorException: сообщение, полученное с сервера, не может быть проанализировано. Распространенные причины этой ошибки заключаются в том, что ответ изменяется вызовами ответа.Включена функция Write(), фильтры ответов, HttpModules или трассировка сервера.
Подробности: ошибка синтаксического анализа рядом с '<div>
&ЛТ;таблица классов.

Thanks7872

У вас есть панель обновления на Вашей странице?

anurag19289

да панель обновления есть

Thanks7872

Переместите кнопку в панели обновления за пределы панели обновления или добавьте PostBackTrigger в вашу панель обновления, которая указывает на кнопку. Это отлично работает, если кнопка объявлена статически через разметку на странице.

anurag19289

Здравствуйте, эта панель обновления есть на странице aspx ... и она используется для какой-то другой цели,,,
а кнопка находится за пределами панели обновления

anurag19289

я отредактировал свой вопрос ... пожалуйста, помогите мне в этом случае

Thanks7872

Прежде всего удалите весь код,ненужные комментарии между кодом и опубликуйте только следующие вещи:

1) блок кода Scriptmanager
2) кодовый блок updatepanel
3) функция экспорта в excel

Рейтинг:
0

Member 13514702

Убедитесь, что кнопка зарегистрирована для обратной передачи Ajax.. Пример фрагмента кода в загрузке страницы решил мою проблему .. Эта проблема была решена кем-то другим на этой странице : в C# - sys файла.Веб-формы.Исключение PageRequestManagerParserErrorException: сообщение, полученное от сервера, не может быть проанализировано - переполнение стека[^]

охраняемых недействительными в(объект отправителя, EventArgs в электронной) {
Элемента управления scriptmanager элемента управления scriptmanager = элемента управления scriptmanager.GetCurrent(this.Page);
элемента управления scriptmanager.RegisterPostBackControl(this.btnExcelExport);
//Дальнейший код идет здесь....
}