PDA

View Full Version : سوال: جلوگیری از اجرای دوباره query بانک اطلاعاتی با referesh کردن صفحه



par3eh
سه شنبه 21 خرداد 1392, 15:52 عصر
سلام دوستان
وقتی یک عملیاتی رو روی بانک sql ام انجام میدم ، آپدیت یا ثبت رکورد جدید .... اگه صفحه رفرش بشه ، این query دوباره اجرا میشه. مثلا اگه یک رکورد ساختم اگه صفحه به صورت دستی رفرش بشه دوباره اون رکورد ساخته میشه...هرچندبار که رفرش کنیم همین کار ادامه پیدا میکنه...

چطور میتونم کاربر رو ملزم کنم که اگه صفحه به مشکل خورد و مجبور شد رفرش کنه مراحل رو از اول انجام بده و کد قبلی که اون درخواست داده بود (ایجاد یک رکورد ، مثل ثبت یک کالا) دوباره اجرا نشه ؟

___________
با تشکر

EnKamran
سه شنبه 21 خرداد 1392, 18:10 عصر
شما میای توی catch میگی اگر ارور داد دوباره Response.Redirect بدی به همون صفحه ای که الان هست.

par3eh
سه شنبه 21 خرداد 1392, 18:40 عصر
شما میای توی catch میگی اگر ارور داد دوباره Response.Redirect بدی به همون صفحه ای که الان هست.

سلام
دوست عزیز ارور که نمیده ، مثلا من یک کامندی رو اجرا میکنم ، اون اطلاعاتو توی پایگاه اضافه میکنه ، پیج پست بک میشه .... حالا من دکمه رفرش مرورگرمو بزنم دوباره اینکار تکرار میشه ... من نمیخوام با رفرش کردن اینکار ادامه پید کنه...

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

توجه کنین که اروری در کار نیست....مثلا توی سایت ثبت نام کنکور توی بک کردن پیج ها این پیغام رو گذاشتن.

ahmad156
سه شنبه 21 خرداد 1392, 18:49 عصر
شما میتونین از viewstate استفاده کنین که بعد از عملیات مقدارش رو تغییر بدین یا مثلا در عملیات درج شما بعد از درج رکورد مقادیر موجود در TextBox ها رو پاک کنین و قبل از درج هم حتما چک کنین که مقادیر حتما مقدار داشته باشن

alireza.tofigh
چهارشنبه 22 خرداد 1392, 20:06 عصر
میشه بیشتر توضیح بدین؟!
من هم این مشکل را دارم، بدون هیچ خطایی اطلاعات در دیتابیس ذخیره میشه، بعدش اگه صفحه را رفرش کنی باز اقدام به ذخیره کردن همان اطلاعات میکنه

younesdoost
چهارشنبه 22 خرداد 1392, 20:19 عصر
اگه تو جدولی که این اتفاق توش میفته به جز کلید اصلیتون فیلد دیگه ای دارید که یونیک هستش قبل از insert کردن با اون فیلد یونیک چک کنید ببینید به همچین رکوردی قیلا ثبت شده یا نه.

tooraj_azizi_1035
چهارشنبه 22 خرداد 1392, 21:34 عصر
این لینک عالی توضیح داده:http://www.mindfiresolutions.com/Avoid-Duplicate-record-insertion-on-page-refresh-in-ASPNET-486.php

powerdangerouseb
چهارشنبه 22 خرداد 1392, 22:09 عصر
با درود
کار خیلی اسونی
شما فقط نیاز داری از کد

if(!IsPostBack)
{
کدی که برای ارسال کردن دیتا به دیتابیس استفاده می شه
}

و از همه مهم تر این کد رو در page_load پیجت باید قرار بدی پس از ان همه چیز درست یمی شه

پیروز باشی

alireza.tofigh
چهارشنبه 22 خرداد 1392, 22:19 عصر
من تو رویداد کلیک کردن دارم دیتا رو تو دیتابیس ذخیره می کنم، پس نمیشه از رویداد page_load استفاده کنم

forestasphalt
چهارشنبه 22 خرداد 1392, 23:08 عصر
با درود
کار خیلی اسونی
شما فقط نیاز داری از کد

if(!IsPostBack)
{
کدی که برای ارسال کردن دیتا به دیتابیس استفاده می شه
}

و از همه مهم تر این کد رو در page_load پیجت باید قرار بدی پس از ان همه چیز درست یمی شه

پیروز باشی
بازم وارد میشه قبلا تست شده:بامزه:
همون لینکی رو دوستمون tooraj_azizi_1035 دادن رو امتحان کنید