sh6664
یک شنبه 03 مهر 1390, 08:56 صبح
سلام
من یک Web control نوشتم که اطلاعات GridView در هر Page را در فایل Excel ذخیره کند .
به این ترتیب که نام GridView را به عنوان Property وارد کرده و بر اساس این نام اطلاعات را به فایل Excel تبدیل میکند.
همانطور که می دانید برای تبدیل به فایل Excel باید از کدزیر استفاده کرد :
grvShowReport.AllowSorting = false;
grvShowReport.AllowPaging = false;
grvShowReport.EditIndex = -1;
//grvShowReport.DataBind();
/////////////Output GridView To Excel //////////////
Response.Clear();
Response.ContentType = "application/ms-excel";
Response.Charset = "";
this.EnableViewState = false;
Page.EnableViewState = false;
Response.AddHeader("Content-Disposition", "inline;filename=Total_NezaratReport.xls");
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
grvShowReport.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
در این کد من نمی دانم که دستور response چه کاری انجام میدهد و متعلق به کدام کنترل است ؟
و چون در Web control باید مشخص می کردم که متعلق به کدام کنترلو یا Page است من کلمه page را به اول تمام خطوطی که دستور Response داشتند اضافه کردم . با این حال تبدیل فایل به Excel انجام می شود ولی داخل آن اطلاعات GridView نمایش داده نمی شود و فقط Tag به نام <div></Div>
در فایل Excel نمایش داده می شود .
کد Web Control هم این است :
namespace PrintToExcelFileImageButtonWebControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
publicclassServerControlExcel : ImageButton
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
privateGridView _oGridViewName = newGridView();
publicstring GridViewName
{
set
{
_oGridViewName.ID = value.ToString();
}
get
{
return _oGridViewName.ID.ToString();
}
}
protectedoverridevoid RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
protectedoverridevoid OnClick(ImageClickEventArgs e)
{
base.OnClick(e);
_oGridViewName.AllowSorting = false;
_oGridViewName.AllowPaging = false;
_oGridViewName.EditIndex = -1;
/////////////Output GridView To Excel //////////////
Page.Response.Clear();
Page.Response.ContentType = "application/ms-excel";
Page.Response.Charset = "";
this.EnableViewState = false;
Page.EnableViewState = false;
Page.Response.AddHeader("Content-Disposition", "inline;filename=Total_NezaratReport.xls");
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
_oGridViewName.RenderControl(hw);
Page.Response.Write(tw.ToString());
Page.Response.End();
}
}
}
به نظر شما من باید چی کار کنم ؟
من یک Web control نوشتم که اطلاعات GridView در هر Page را در فایل Excel ذخیره کند .
به این ترتیب که نام GridView را به عنوان Property وارد کرده و بر اساس این نام اطلاعات را به فایل Excel تبدیل میکند.
همانطور که می دانید برای تبدیل به فایل Excel باید از کدزیر استفاده کرد :
grvShowReport.AllowSorting = false;
grvShowReport.AllowPaging = false;
grvShowReport.EditIndex = -1;
//grvShowReport.DataBind();
/////////////Output GridView To Excel //////////////
Response.Clear();
Response.ContentType = "application/ms-excel";
Response.Charset = "";
this.EnableViewState = false;
Page.EnableViewState = false;
Response.AddHeader("Content-Disposition", "inline;filename=Total_NezaratReport.xls");
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
grvShowReport.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
در این کد من نمی دانم که دستور response چه کاری انجام میدهد و متعلق به کدام کنترل است ؟
و چون در Web control باید مشخص می کردم که متعلق به کدام کنترلو یا Page است من کلمه page را به اول تمام خطوطی که دستور Response داشتند اضافه کردم . با این حال تبدیل فایل به Excel انجام می شود ولی داخل آن اطلاعات GridView نمایش داده نمی شود و فقط Tag به نام <div></Div>
در فایل Excel نمایش داده می شود .
کد Web Control هم این است :
namespace PrintToExcelFileImageButtonWebControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
publicclassServerControlExcel : ImageButton
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
privateGridView _oGridViewName = newGridView();
publicstring GridViewName
{
set
{
_oGridViewName.ID = value.ToString();
}
get
{
return _oGridViewName.ID.ToString();
}
}
protectedoverridevoid RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
protectedoverridevoid OnClick(ImageClickEventArgs e)
{
base.OnClick(e);
_oGridViewName.AllowSorting = false;
_oGridViewName.AllowPaging = false;
_oGridViewName.EditIndex = -1;
/////////////Output GridView To Excel //////////////
Page.Response.Clear();
Page.Response.ContentType = "application/ms-excel";
Page.Response.Charset = "";
this.EnableViewState = false;
Page.EnableViewState = false;
Page.Response.AddHeader("Content-Disposition", "inline;filename=Total_NezaratReport.xls");
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
_oGridViewName.RenderControl(hw);
Page.Response.Write(tw.ToString());
Page.Response.End();
}
}
}
به نظر شما من باید چی کار کنم ؟