PDA

View Full Version : سوال: اشكال در export كامپوننت Gridview به Excel



RoostaYeBekr
سه شنبه 19 خرداد 1388, 13:00 عصر
من اين كد رو براي اين كار ، قرار دادم .


protectedvoid Button_Export_to_Excel_Click(object sender, EventArgs e)
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = newHtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}

ولي ،‌روي خط
GridView1.RenderControl(htmlWrite);

خطاي زير رو مي گيره :
Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server

tazaree
پنج شنبه 29 مهر 1389, 17:07 عصر
من اين كد رو براي اين كار ، قرار دادم .


protectedvoid Button_Export_to_Excel_Click(object sender, EventArgs e)
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = newHtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}

ولي ،‌روي خط
GridView1.RenderControl(htmlWrite);

خطاي زير رو مي گيره :
Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server


من هم اتفاقا با همین خطا مواجه شدم خوب راه چاره چیه؟

Ali_M.Eghbaldar
پنج شنبه 29 مهر 1389, 18:46 عصر
از MasterPage استفاده می کنی؟

raziee
جمعه 30 مهر 1389, 12:46 عصر
خطاي زير رو مي گيره :
Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server
__________________
بعضی از کنترل ها حتما باید درون تگ
<form id="form1" runat="server"></form>
قرار بگیرند.

من برای خروجی گرفتن به صورت زیر عمل میکنم:
protected void btnExport_Click(object sender, EventArgs e)
{
if (ReportGridView.Rows.Count < 1)
{
return;
}

string fileToExport = string.Empty;
string contentType = string.Empty;
StringBuilder sb = new StringBuilder();

sb.Append(@"<html><head><meta http-equiv=Content-Type content=""text/html; charset=utf-8""><style> .text { mso-number-format:\@; } .trFormat{color:Black;background-color:#DEDFDE;} </style></head><table dir=""rtl"" cellspacing=""1"" cellpadding=""3"" border=""0"" style=""background-color:White;border-color:White;border-width:2px;border-style:Ridge;font-family:Tahoma;font-size:11px;width:100%;""><tbody>");

string temp = string.Empty;
string tempColumn = string.Empty;
sb.Append("<tr>");
foreach (ListItem li in chkHideShowFieldList.Items)
{
if (li.Selected)
{
int column = 0;
column = int.Parse(li.Value);
tempColumn = ReportGridView.Columns[column].HeaderText.ToString();

sb.Append(string.Format("<th>{0}</th>", tempColumn));
}
}
sb.Append("</tr>");
for (int i = 0; i < ReportGridView.Rows.Count - 1; i++)
{
foreach (ListItem li in chkHideShowFieldList.Items)
{
int column = 0;
if (li.Selected)
{
column = int.Parse(li.Value);
tempColumn = ReportGridView.Rows[i].Cells[column].Text.ToString();

temp += string.Format("<td>{0}</td>", tempColumn);
}
}
sb.Append(string.Format("<tr>{0}</tr>", temp));
temp = string.Empty;
}
sb.Append(@"</tbody></table></html>");
sb.Replace(@"ی", @"ی");
fileToExport = string.Format("Report_ExcelFormat_{0}_{1}.xls", DateTime.Now.ToShortDateString(), DateTime.Now.Second.ToString());
contentType = @"application/vnd.xls;";
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + fileToExport);
Encoding encode = Encoding.UTF8;
Response.ContentEncoding = encode;
Response.ContentType = contentType;
Response.Write(sb.ToString());
Response.End();
}

public override void VerifyRenderingInServerForm(Control control)
{
// DON'T REMOVE THIS METHOD!!!
// >>> This means that we are overriding the default implementation of the
// method and giving permission to the GridView to be exported as
// an Excel file.
}

chkHideShowFieldList برای مشخص کرده نمایش ستون ها است.
این متد رو از گرید ویو ورژن 7 جناب راد برداشتم و با توجه به پروژه ی خودم تغییراتی رو دادم.شما میتونید به همون پروژه ی نمونه و بسیار مفید جناب راد مراجعه کنید .

sima_2n5k
دوشنبه 10 آبان 1389, 16:32 عصر
من هم اتفاقا با همین خطا مواجه شدم خوب راه چاره چیه؟
منم این مشکلو دارم و از MasterPage استفاده میکنم
راه حل دارید؟

aliyeh
سه شنبه 02 آذر 1389, 22:41 عصر
كد زير را اضافه كنيد
public override void VerifyRenderingInServerForm(Control control)
{

/* Verifies that the control is rendered */

}

hossinpour
چهارشنبه 03 آذر 1389, 12:26 عصر
با عرض سلام . خسته نباشید
ممنون می شم یه نمونه اجرایی برای دوستان بذارید که مفهومی تر باشه و برای ما مبتدی ها راحت تر باشه.
با تشکر فراوان