PDA

View Full Version : مشکل در viewsate و pageload



Ehsan Rafsanjani
دوشنبه 28 آذر 1384, 12:24 عصر
من توی یک صفحه یک کلید دارم که با کلیک اون باید به یک viewsatae یک مقدار داده و توی pageload بازیابی بشه چون سیکل اجرای کلیک بعد از pageload باید دوبار کلیک کنم یعنی pageload همیشه یکی از کلیک عقب تره .............. چه جوری می تونم این مشکل رو حل کنم ......................

SalarSoft
دوشنبه 28 آذر 1384, 14:46 عصر
ترتیب اجرای روال page_load قبل از خواندن viewstat و قبل از بر انگیخته شدن رویداد ها است!

برای اینکه بتونید به درستی چیزی رو در viewstat ذخیره کنی اونو تو روال OnPreRender بنویس!
توجه کن که این روال بعد فراخوانی رویداد کلیک اجرا میشه!

ترتیب اجرای صفحه بدون جزئیات اینطوریه:
لود شدن صفحه -- مقداردهی وضعیت کنترل ها یا همون مرحله viewstat -- فراخوانی رویداد ها -- رندر صفحه -- پایان کار صفحه

Ehsan Rafsanjani
دوشنبه 28 آذر 1384, 15:02 عصر
اگه بتونین یک نمونه کد برام بزارین خیلی ممنون میشم آخه من تقریبا توی همه روال ها این کار رو انجام دادم ولی بازم نشد..........

Ehsan Rafsanjani
دوشنبه 28 آذر 1384, 16:02 عصر
به کد زیر توجه کنید



dim k as integer
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Label2.Text = ViewState("er")
End Sub

Protected Sub Button1_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
k = 3
End Sub


Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender

ViewState("er") = k
End Sub

ولی بازم کار نمی کنه یعنی باید دوبار کلیک بشه؟؟؟؟؟؟؟؟؟؟؟؟

SalarSoft
سه شنبه 29 آذر 1384, 12:39 عصر
کدت رو اینطوری اصلاح کن:


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub

Protected Sub Button1_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
ViewState("er") = 3
End Sub

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
Label2.Text = ViewState("er")
End Sub


اگه خواستی این قسمت رو هم به page_load اظافه کن:


if(ViewState("er")<>Nothing)Then
Label2.Text = ViewState("er")
End if