PDA

View Full Version : یه مشکل در مورد ا حتمالاً Postback



explod_javad
پنج شنبه 12 اردیبهشت 1387, 10:56 صبح
من توي يه صفحه ميخام يه رکورد به بانک اضافه کنم و بعد از اضافه شدن توي ديتا گريد نمايش بدم
1-همه اين کارا با موفقيت انجام ميشه ولي اگه بعد از اضافه شدن کليد هاي Ctrl+F5 رو فشار بدم يا Back مرورگر رو بزنم دوباره عمل درج (کدهاي مروبه به کليد درج) مجدداً اجرا ميشه .

2- ميخام از کليد حذف در ديتا گريد استفاده کنم
بعد از زدن کليد حذف براي خذف رکورد مورد نظر ، 2 دفعه کد مربوط به GridView_RowDeleting اجرا ميشه. از کد زير هم استفاده کردم ولي نشد !
If not IsPostBack Then
مراجل حذف
End If

* ميخام بعد از ايجاد رکورد با Back کردن به صفحه قبل امکان نمايش گريد قبلي (يا اصلاً کل صفحه)ممکن نباشه
از EnableViewState="false" هم در اول صفحه استفاده کردم ولي نشد !:عصباني++:
از اساتيد ، کسي مي تونه کمک کنه ؟

shahab_ksh
پنج شنبه 12 اردیبهشت 1387, 11:02 صبح
2- ميخام از کليد حذف در ديتا گريد استفاده کنم
بعد از زدن کليد حذف براي خذف رکورد مورد نظر ، 2 دفعه کد مربوط به GridView_RowDeleting اجرا ميشه. از کد زير هم استفاده کردم ولي نشد !
If not IsPostBack Then
مراجل حذف
End If

اگه منظورتون اینه انگار دو بار کلید رو فشار دادیدگزینه CausesValidation رو برای اون کلید غیر فعال کنید

explod_javad
پنج شنبه 12 اردیبهشت 1387, 11:11 صبح
ممنون از دوست عزیز Shahab_Ksh
من اینو نمی دونیستم
ولی در مورد زدن Back مرورگر و نمایش صفحه قبل ،
میخام صفحه قبل و گرید با محتویات قبلی که آپدیت نیست نمایش داده نشه .
اینو چی کار کنم

shahab_ksh
پنج شنبه 12 اردیبهشت 1387, 11:29 صبح
ولی در مورد زدن Back مرورگر و نمایش صفحه قبل ،
میخام صفحه قبل و گرید با محتویات قبلی که آپدیت نیست نمایش داده نشه .
اینو چی کار کنم


اینجا ها رو یه نگاه بندازید در مورد از کار انداختن back گفته در صفحه

از

HttpResponse.Expires

استفاده کن و اینجا ها رو هم یه نگاه بنداز

http://barnamenevis.org/forum/showthread.php?t=32174
http://barnamenevis.org/forum/showthread.php?t=49805

explod_javad
پنج شنبه 12 اردیبهشت 1387, 14:17 عصر
دوست عزیز مشکل من کماکان با انجام مراحل فوق پابرجاست
ممنون میشم اگه کسی راهنمایی کنه

raravaice
پنج شنبه 12 اردیبهشت 1387, 14:51 عصر
میخام صفحه قبل و گرید با محتویات قبلی که آپدیت نیست نمایش داده نشه .
اینو بزار تو لود صفحه نزار صفحه cache بشه.



Response.Cache.SetExpires(Now.Date.AddDays(-1))


موفق باشید

sepideh_om
شنبه 14 اردیبهشت 1387, 13:28 عصر
سلام
من ام این سوال رو داشتم دستوری ام که گفته بودید را هم تو لود صفحه گذاشتم
اما اگر بعد از insert چند بار صفحه را refresh کنم بازم چند بار insert انجام می شه!!

raravaice
شنبه 14 اردیبهشت 1387, 14:11 عصر
اگر بعد از insert چند بار صفحه را refresh کنم بازم چند بار insert انجام می شه!!

از if not ispostback هم استفاده کردید؟!

موفق باشید

sepideh_om
شنبه 14 اردیبهشت 1387, 14:37 عصر
بله


IfNot IsPostBack Then
Response.Cache.SetExpires(Now.Date.AddDays(-1))

EndIf



به صورت بالا نوشتم ولی باز هم چند بار insert میشه

raravaice
شنبه 14 اردیبهشت 1387, 14:52 عصر
شما دستورات مربوط به insert رو توی رویداد کلیک گذاشتین و بعد از کلیک روی کلید با هر بار رفرش صفحه در اصل این رویداد دوباره تکرار میشه.
راحتترین راه اینه که بعد از insert صفحه رو redirect کنی جای دیگه.

موفق باشید

sepideh_om
شنبه 14 اردیبهشت 1387, 15:04 عصر
شما دستورات مربوط به insert رو توی رویداد کلیک گذاشتین و بعد از کلیک روی کلید با هر بار رفرش صفحه در اصل این رویداد دوباره تکرار میشه.

بله شما قدرت حدس تون خیلی بالا ست ;-)

من یک گرید دارم که می خوام اون نمایش داده بشه و نمی خوام redirect کنم
چیز دیگه ای به ذهنتون میرسه؟؟

raravaice
شنبه 14 اردیبهشت 1387, 15:57 عصر
روی خود صفحه redirect کنید که مشکلی پیش نمیاد.

موفق باشید

sepideh_om
شنبه 14 اردیبهشت 1387, 16:15 عصر
درست میگید، ولی اینطوری باید با querystring ها کار کنم و هر بار که صفحه لود میشه چند تا چیز را که زیاد هم هستند چک کنم
که اگر دکمه جدید بود ...
اگر حذف بود ....
اگر ویرایش بود ....
اگر paging گرید بود ...
که فکر کنم زیاد جالب نباشه

shahab_ksh
شنبه 14 اردیبهشت 1387, 16:50 عصر
هیچ لزومی به استفاده از Redirect نیست و منطقی به نظر نمیرسه با وجود امکانات دات نت کدتون رو با html بزارید ببینیم مشکل کجاست که دو بار میزنه

sepideh_om
یک شنبه 15 اردیبهشت 1387, 09:51 صبح
کد ام را به همراه یک dbکوچک یک table براتون گذاشتم ممنون میشم اگه یک نگاهی به اون بکنید

explod_javad
پنج شنبه 19 اردیبهشت 1387, 10:48 صبح
سلام به همه دوستان
یعنی هیج کس این مشکل براش پیش نیومده ؟
منو کلافه کرده :عصبانی++:
باز دن یه کلید بعد از postback رویداد اون دوباره اجاره میشه

my_blithe
یک شنبه 05 خرداد 1387, 10:03 صبح
خاصیت های EnableViewState رو برای گریدت false کن

afshinjazi
یک شنبه 08 دی 1387, 10:36 صبح
دوست عزيز شايد اين جواب ديگه به دردت نخوره ....( به دليل دير شدن :گیج:)

ولي چون خودم اين مشكلو داشتم و با Search هم جوابي برام بدست نيومد....

راهي كه به نظر خودم اومد رو مي نويسم....

مي توني از ViewState يا از Session استفاده كنيد مثل يك Flag ( براي جلوگيري از دوبار تكرار شدن مثلا Insert در ديتابيس)




If ViewState("SQL") <> 1 Then
SQL.ExecuteNonQuery() ' Insert Statemanet of Sql
ViewState("SQL") = 1
SQL.Connection.Close()
End If


:لبخندساده::تشویق: