PDA

View Full Version : استفاده datatable در دو صفحه



ramin149
دوشنبه 14 شهریور 1390, 19:40 عصر
چگونه میتونم در یک datatable در یک صفحه اطلاعات بریزم و در صفحه دیگر اون اطلاعات را باز خوانی کنم به طوری که در صفحه دوم اطلاعات از بین نرود

reza344
دوشنبه 14 شهریور 1390, 22:31 عصر
سلام
DataTable رو داخل Session ذخیره کن ، هر جای برنامت که خواستی بهش دسترسی داری

moferferi
دوشنبه 14 شهریور 1390, 22:32 عصر
هم میشه دیتاتیبل را کش کرد.و هم اینکه اطلاعاتش را توی یه فایل xml ریخت

ramin149
سه شنبه 15 شهریور 1390, 00:02 صبح
آیا روش های بهتری هست و لطفا برای توضیحات بالا مثال کد یا لینک آموزش بگذارید

reza344
سه شنبه 15 شهریور 1390, 01:00 صبح
ایجاد Session
Session["myDatatable"] = myDatatable;

استفاده از آن:
DataTable dt =new DataTable();
dt =(DataTable)Session["myDatatable"];

Saman Hashemi
سه شنبه 15 شهریور 1390, 07:56 صبح
بهتر است ساختارهاي پيچيده مانند datatable درون كش يا session قرار نگيرند شما ميتوانيد به جاي اين كار اگر از بانك اطلاعات به دست مي آورديد دستور توي session ذخيره كنيد و توي ديگه صفحات دوباره بدستشون بياريد...!

moferferi
سه شنبه 15 شهریور 1390, 20:31 عصر
اگه شما در صفحه اول یک سری اطلاعات وارد دیتاتیبل کنید و بخواهید توی صفحات دیگه ازش استفاده کنید.البته بدون اینکه دوباره سراغ دیتابیس برین
اول باید اطلاعات را درون یه فایل xml برزید
DataTable dt = new DataTable();
dt.Columns.Add("newsid");
dt.Columns.Add("newssubject");
dt.Rows.Add("news1","subject news 1");
dt.Rows.Add("news2","subject news 2");
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.WriteXml(Server.MapPath(".") + "\\news.config");

حالا توی صفحات دیگه کافیه از این فایل xml استفاده کنید
به این روش
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(".") + "\\admin\\news.config");
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();

استفاده بیش از حد از session ها کار درستی نیست.بهترین کار واسه کار شما استفاده از همین فایل های xml هست.

ramin149
چهارشنبه 16 شهریور 1390, 17:26 عصر
اگه شما در صفحه اول یک سری اطلاعات وارد دیتاتیبل کنید و بخواهید توی صفحات دیگه ازش استفاده کنید.البته بدون اینکه دوباره سراغ دیتابیس برین
اول باید اطلاعات را درون یه فایل xml برزید
DataTable dt = new DataTable();
dt.Columns.Add("newsid");
dt.Columns.Add("newssubject");
dt.Rows.Add("news1","subject news 1");
dt.Rows.Add("news2","subject news 2");
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.WriteXml(Server.MapPath(".") + "\\news.config");

حالا توی صفحات دیگه کافیه از این فایل xml استفاده کنید
به این روش
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(".") + "\\admin\\news.config");
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();

استفاده بیش از حد از session ها کار درستی نیست.بهترین کار واسه کار شما استفاده از همین فایل های xml هست.

من روش شما را انجام دادم اما چند سوال برایم پیش آمد .
اول اینکه باید نام xml یکتا باشه . اگر یک نفر اطلاعاتی ذخیره کند و در همان لحظه شخص دیگری این کار را انجام دهد اطلاعات جایگزین می شود .
سوال دوم اگر کاربر در صفحه بعد بیخیال رزرو بشود آیا فایل Xml بعد از مدتی پاک می شود . اگر خیر آیا می شود برایش زمان انقضا نوشت

moferferi
چهارشنبه 16 شهریور 1390, 20:50 عصر
میتونی یه پوشه temp ایجاد کنی و نام فایل xml را همون نام کاربری قرار بدی تا یکتا باشه و بعد بریزی توی temp.
بعد بیا توی Session_End تعریف کن کاربر هایی که session اونها از بین رفته فایل xml به همون نام را هم پاک کنه.

ramin149
چهارشنبه 16 شهریور 1390, 22:42 عصر
بعد بیا توی Session_End تعریف کن کاربر هایی که session اونها از بین رفته فایل xml به همون نام را هم پاک کنه.

میشه برای این موضوع یه مثال کد قرار دهید . من تاحالا در Session_End کد نوشتم . اگر امکان دار !:خجالت: