View Full Version : چگونه مقدار DataTable پس از کلیک شدن نگه داریم.
sayanpro
سه شنبه 06 خرداد 1393, 15:08 عصر
سلام دوستان گرامی.
من در فرمم دو تا button دارم.
وقتی button1 کلیک می شود یک dataTable پر می شود و به عنوان dataSource به gridView وصل می شود.
می خواهم فقط وقتی button2 کلیک می شود آن dataTable که در بالا پر شده است را در یک فایل اکسل ذخیره کند.
ولی چون وقتی button1 کلیک می شود صفحه Refresh می شود مقدار dataTable بالا null می شود.
چگونه پس از کلیک شدن دکمه اولی از مقدار dataTable در دکمه دومی استفاده کنم؟
ممنون از راهنمایی شما
rezadana
سه شنبه 06 خرداد 1393, 17:10 عصر
سلام. شما میتونید وقتی روی دکمه2 کلیک کردید محتویات گریدویو رو به فایل اکسل یا ورد تبدیل کنید به کمک آموزش زیر . موفق باشید دوست عزیز.
فرستان داده های GridView به ورد و اکسل
یکی از امکانات خوب برای سایت ها و پروژه های ASP.NET امکان خروجی به ورد (Word) و اکسل (Excell) است.
احتمالا در خیلی از سایت ها سورس کد این کار را گذاشته اند ولی واقعیت این است که هیچکدام از آن ها برای فارسی و عربی (یونیکد) به درستی عمل نمی کنند. من وقتی این را دریافتم که در یکی از پروژه های خود به این مشکل برخوردم. بالاخره بعد از تلاش فراوان موفق شدم مشکل را حل کنم. اکنون کد آن را در اختیار خوانندگان قرار می دهم.
ابتدا فضای نام های ذیل را لازم داریم:
using System.Web.UI.HtmlControls;
using System.Text;
using System.IO;
اکنون یک GridView به صفحه افزوده و دو دکمه هم کنار آن قرار دهید. داده های مورد نظر خود را در GridView لود کنید؛ چیز مشابه شکل ذیل:
http://www.fekrenaw.com/Images/Topics/asp_1.jpg
کدها دو دکمه برای فرستادن داده ها به ورد و اکسل چنین است:
protected void Button1_Click(object sender, EventArgs e)
{
try
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.doc");
Response.ContentType = "application/vnd.word";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode. GetPreamble());
this.EnableViewState = false;
StringWriter sr = new StringWriter();
System.Web.UI.HtmlTextWriter hr = new HtmlTextWriter(sr);
GridView1.RenderControl(hr);
Response.Write(sr.ToString());
HttpContext.Current.ApplicationInstance.CompleteRe quest();
sr.Dispose();
hr.Dispose();
Response.End();
}
catch (Exception ex)
{
}
}
protected void Button2_Click(object sender, EventArgs e)
{
try
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode. GetPreamble());
this.EnableViewState = false;
StringWriter sr = new StringWriter();
HtmlTextWriter hr = new HtmlTextWriter(sr);
GridView1.RenderControl(hr);
Response.Write(sr.ToString());
sr.Dispose();
hr.Dispose();
Response.End();
}
catch (Exception ex)
{
}
}
public override void VerifyRenderingInServerForm(Control control)
{
}
از آنجا که این قطعه کد کاملا روشن است (شما همه تون استاد منید!) نیازی به توضیح نیست؛ البته متد اخیر را نیز فراموش نکنید!
شکل ذیل نتیجه کار را نشان می دهد.
http://www.fekrenaw.com/Images/Topics/asp_2.jpg
http://www.fekrenaw.com/Images/Topics/asp_3.jpg
--------------------
www.rezalynda.rzb.ir
sayanpro
سه شنبه 06 خرداد 1393, 18:15 عصر
دوست عزیز از راهنمایی شما بسیار ممنونم
اگر امکان دارد source این برنامه را برای دانلود بگذارید، چون کدها بهم ریخته نمایش می دهد.
در ضمن من از Telerik GridView استفاده می کنم، آیا این گریدویو با مثال شما نیز کار می کند.
همچنین در مورد حفظ دادهای DataTable نیز پیشنهادی دارید؟
با تشکر فراوان از شما.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.