PDA

View Full Version : اجرای یک متد هنگام بستن مرورگر



veronika
دوشنبه 25 بهمن 1389, 22:47 عصر
دوستان سلام
منیک صفحه دارم که وقتی وارد آن میشویم یک متدی را اجرا کرده(یعنی به دیتابیس وصل شده و مقدار یک فیلد جدول را با دستور update تغییر میدهد.)اگر دکمه انصراف را بزند دوباره update انجام میشود و مقدار به حالت قبلی برمی گردد.حالا من سوالم اینه که اگه کاربر مرورگر را بست چه جوری دستور update را انجام بدم و مقدار را به حالت قبلی برگردونم؟
ممنون میشم راهنمایی کنید.

Ali_M.Eghbaldar
سه شنبه 26 بهمن 1389, 01:44 صبح
سلام دوست من
می تونی از متد Application _End فایل Global استفاده کنی ولی مقداری Delay داره !!

aminghaderi
سه شنبه 26 بهمن 1389, 05:12 صبح
دوستان سلام
منیک صفحه دارم که وقتی وارد آن میشویم یک متدی را اجرا کرده(یعنی به دیتابیس وصل شده و مقدار یک فیلد جدول را با دستور update تغییر میدهد.)اگر دکمه انصراف را بزند دوباره update انجام میشود و مقدار به حالت قبلی برمی گردد.حالا من سوالم اینه که اگه کاربر مرورگر را بست چه جوری دستور update را انجام بدم و مقدار را به حالت قبلی برگردونم؟
ممنون میشم راهنمایی کنید.
سلام.
اول اینکه کلا کار شما از ریشه و بن مشکل داره ؟! شما دارید اطلاعات رو روی db ذخیره می کنید قبل از ثبت نهایی ؟!:گیج:
یه راهی که الان فعلا خاطر دادم استفاده از کوکی ها در چنین سناریوهایی می تونه عالی باشه.
در رابطه با اصل سوالتون هم با اجکس می شه این کار رو کرد ولی طراحیش ظاهرا دشواره؟!
من الگریتمش رو توی یکی از پست هام دادم اگر خیلی به اجکس مسلط هستید و روحیه اکتشافگری دارید بهتون دوبارهع توضیح می دم ، چون بعید بشه دوباره به اون پست من دست پیدا کرد...

موفق باشی.

موفق باشی.

V0R73X
سه شنبه 26 بهمن 1389, 06:20 صبح
سلام.
این سوال منم بود. این لینکو (http://barnamenevis.org/showthread.php?267314-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D8%A8%D8%B3%D8%AA%D9%87-%D8%B4%D8%AF%D9%86-%D9%85%D8%B1%D9%88%D8%B1%DA%AF%D8%B1-%D8%AA%D9%88%D8%B3%D8%B7-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1/page2) نگاه بنداز.

V0R73X
سه شنبه 26 بهمن 1389, 06:25 صبح
سلام دوست من
می تونی از متد Application _End فایل Global استفاده کنی ولی مقداری Delay داره !!
میشه درباره این متد توضیح بدید؟؟

oossaa
سه شنبه 26 بهمن 1389, 07:41 صبح
Application_End حالت کلی برای همه ی کاربراس پس با اون چیزی که شما می خوای فرق داره میشه از session و رویداد session_end تو global استفاده کرد که البته اگر session.time_out رو تغییر نداده باشی 20 دقیقه طول می کشه که اجرا بشه
برای استفاده از رویداد session_end هم باید تو web.config اینو داشته باشی

<sessionState mode="InProc" />
</system.web>

آخه برای کاری که شما می خوای بکنی اصلا این چیزا لازم نیست!اگه بیشتر توضیح بدی بهتر می تونیم کمک کنیم.

من فک می کنم بهتر باشه شما از session برای این کارت استفاده کنی یعنی تو صفحه ای که کاربر داره اطلاعات update رو وارد می کنه شما یه datatable به session اضافه کن بعد توی صفحه ی بعدت castش کنی.اگه انصراف رو بزنه کاربر خوب هیچ کدی اجرا نشه اگه تأیید رو زد بعد وصل بشو به database اینجوری کدت بهتره و ایجاد سربار نمی کنه

veronika
سه شنبه 26 بهمن 1389, 10:13 صبح
دوستان ممنون از راهنماییتون.
صفحه ای که من دارم به این شکل هست که کاربر یه سری آیتم را انتخاب میکنه و وارد صفحه مورد نظر میشه در ان صفحه یک تایمر هست که 15 دقیقه فرصت داره تا سفارش را نهایی کنه و پرداخت را انجام بده.و در این مدت اگه توسط فرد دیگه ای اون ایتم انتخاب شد پیغام میده که در حال انتخاب توسط فرد دیگری هست.حالا اگه کاربر مرورگر را ببنده من باید اون آیتم ها را ازاد کنم(از طریق update).
تا اونجایی که من متوجه شدم باید از یه وب سرویس و آژاکس استفاده کنم.و update را به عنوان یکی از webmethod ها قرار بدم.من باید در رویداد onunload مربوط به body اون را بنویسم ولی چون دارم از master page استفاده می کنم body ندارم من باید این رویداد را کجا فراخوانی کنم؟

oossaa
سه شنبه 26 بهمن 1389, 11:50 صبح
البته این کاری که شما می کنی خلاف حقوق اخلاقی کاربراس!
برای این کار هم لازم نیست انقد به خودت سخت بگیری من پیشنهاد می کنم یه datatable بسازی که کلید آیتمی که توسط کاربر انتخاب شده و sessionIDش رو تو datatable ذخیره کنی session time out رو روی 15 دقیقه تنظیم کنی و توی رویداد session_End از datatable با استفاده از sessionID اون ردیف datatable رو پاک کنی. البته datatable باید از نوع Applicationی باشه
Application.Add("name", datatable);
بعد وقتی کاربر دیگه ای که می خواد بیاد از datatable کلید آیتم رو cast کنی و با کلید آیتم درخواست شده بررسیش کنی.
این پیشنهاد من بود

ایمان مدائنی
سه شنبه 26 بهمن 1389, 11:57 صبح
ميتوني از آجاكس استفاده كني كه چك كنه به محض بسته شدن مروگر به سرور خبر بده