ورود

View Full Version : سشن مقدار null برمی گرداند



mf_007
دوشنبه 02 بهمن 1391, 17:55 عصر
سلام-من تو برنامم به سشن مقدار می دم بعد تو page load از اون مقدار استفاده می کنم. وقتی مرورگر رو می بندم دوباره همون لحظه برنامه رو اجرا می کنم سشن مقدار null داره. ولی وقتی مرورگر رو نمی بندم و یه تب جدید باز می کنم وآدرس رو کپی می کنم درست کار می کنه. session timeout رو هم بالا گذاشتم. آیا با بستن مرورگر سشن مقدارش خالی می شه؟

ahmad156
دوشنبه 02 بهمن 1391, 18:16 عصر
دوست عزیز Session در 3 صورت از بین میره
1-زمانی که timeout اون برسه
2-زمانی که Session_End فراخوانی بشه
3-اینکه دستی تابع Abandon رو صدا بزنین
و با بستن مرورگر Session از بین نمیره.اشکال کار جای دیگه هست حتما

mf_007
دوشنبه 02 بهمن 1391, 20:05 عصر
من اول دیتا تیبل رو پر می کنم بعد همون لحظه به عنوان دیتاسورس ریپیتر استفاده می کنم و نتیجه رو می بینم بعد همون دیتا تیبل رو می ریزم تو سشن که بعدا استفاده کنم الان متوجه شدم که دیتاتیبل تو سشن هست ولی وقتی همون دیتا تیبل رو به عنوان دیتاسورس استفاده می کنم انگار که دیتاتیبل خالیه و ریپیتر چیزی نشون نمی ده.مثل اینکه دیتاتیبل وقتی از سشن میاد بیرون هیچ اطلاعاتی توش نیست

ahmad156
دوشنبه 02 بهمن 1391, 20:14 عصر
دوست عزیز کدتون رو بذارین

mf_007
دوشنبه 02 بهمن 1391, 21:41 عصر
این کدی که دیتاتیبل به سشن اضافه می شه

protected void Rp2_ItemCommand(object source, RepeaterCommandEventArgs e)
{
// try
// {
if (e.CommandName == "seatcommand")
{

int reserv_number = 0;


string a = Convert.ToString(e.CommandArgument);
string[] b = a.Split('|');
using (reserv rs = new reserv())
{
DataTable dt = rs.selectrow(1, 1, 1, 1, Convert.ToInt16(b[1]), Convert.ToInt16(b[0]), 2);
if (dt.Rows.Count == 0)
{
reserv_number=rs.InsertRow(1, 1, 1, 1, Convert.ToInt16(b[1]), Convert.ToInt16(b[0]), 2, DateTime.Now, "ED124760-6352-4DD0-ADA2-398DD88D23F1");


DataTable dt1 = rs.addtobasket((DataTable)Session["basket"], reserv_number);
Session["basket"]=dt1;
Session.Timeout = 3;

Rpreserv.DataSource = dt1;
Rpreserv.DataBind();
}
}
Response.Redirect("default.aspx",false);

}
// }
// catch { }
}

اینم page load


protected void Page_Load(object sender, EventArgs e)
{

if(!IsPostBack)
{
using (chair ch = new chair())
{

Session.Add("a", ch.first_row(1));

Rp1.DataSource = ch.table_rows(1);
Rp1.DataBind();
}


}

DataTable dt = (DataTable)Session["basket"];
Rpreserv.DataSource = dt;
Rpreserv.DataBind();



}

تو سشن basket دیتا تیبل میریزم می خوام دفعه بعد استفاده کنم تو پیج لود کار نمی کنه دیتا تیبل انگار چیزی نیست توش ولی همون لحظه کار می کنه دقت کنید تو ایتم کامند از همون سشن برای پر کردن ریپیتر استفاده کردم و کار می کنه