PDA

View Full Version : Page Method و استفاده اون در User Control



explod_javad
چهارشنبه 13 آذر 1387, 08:26 صبح
با سلام خدمت همه دوستان.
من خیلی توی همین سایت گشتم ولی مطلب خوبی در مورد Page Method پیدا نکردم.

به وسلیه Page Method میشه خیلی راحت و احتمال بدون اینکه حجم صفحه ما زیاد بشه ، رفتاری شبیه به Update Panel آجاکس رو انجام داد.
من در اولین نمونه کدی که در آخر گذاشتم ، که در یک صفحه Aspx از Page Method استفاده میشه هیچ مشکلی ندارم
ولی توی کد دوم ، من در User Control از Page Method استفاده کردم ولی خطا میده و فکر میکنم بخاطر این هست که یوزر کنترل خاصیت Page رو نداره و فقط میشه در Page از اون استفاده کرد.
توی لینک زیر خوندم که میشه این مشکل رو حل کرد.
http://forums.asp.net/t/1088057.aspx
ولی نشد.؟!

کاری که من میخام بکنم صدا زدن یک تابع با جاوا اسکریت از سمت سرور و البته در User Control

hadi000333
چهارشنبه 13 آذر 1387, 16:25 عصر
دوست عزیز من چندان به userControl ها آشنا نیستم اما
در پروژم این طوری از PageMethods استفاده کردم امید وارم به دردت بخوره.

intervalID = window.setInterval(function(){
PageMethods.GetUploadStatus(function(result){
if(result){
// update the progressbar to the new value
progressBar.set_percentage(result.percentComplete) ;
// upadte the message
updateMessage('info', result.message);

if(result == 100){
// clear the interval
window.clearInterval(intervalID);
}
}
});
}, 500);

explod_javad
پنج شنبه 14 آذر 1387, 08:08 صبح
سلام و ممنون.
مشکل اصلی وقتی هست که تابع داخل Page Method اجرا میشه ولی چون نوع تابع Shared
(در سی شارپ میشه Static)میباشد و من نمیتونم از داخل این تابع به کنترل های صفحه دسترسی داشته باشم.


<System.Web.Services.WebMethod()> _
Public Shared Function Message(ByVal vv As String) As String
Txt_Code نمی تونم از کنترل های موجود استفاده کنم.FindControl هم کار نمیکنه.
Return "ok"
End Function

hadi000333
جمعه 15 آذر 1387, 02:19 صبح
اگه می خوایی از طریق PageMethod این کار رو بکنی باید بگم این غیر ممکنه چون همونطور که خودت می دونی از طریق یک متد static فقط میشه به متد ها و خاصیت های static دسترسی داشت.
خیلی گشتم ولی راهی که به شه از این طریق به کنترل های صفحه دسترسی داشته باشم نشد.
اما اگه تنها مشکلت اینه بهتره از Client Call Back Manager استفاده کنی. هم راحتتره هم دردسرش کمتره.

RaiseCallbackEvent( )

Getcallbackresult ()
خودت search کنی اطلاعات بهتری بدست میاری.

RoostaYeBekr
جمعه 15 آذر 1387, 21:55 عصر
با سلام
explod_javad (http://barnamenevis.org/forum/member.php?u=15518) ، من این فایل اولتان را که فرستادید ، دانلود کردم . ولی خطا می ده.

ParsaNM
شنبه 31 اردیبهشت 1390, 16:37 عصر
دوست عزيز من هم مشکل شما رو دارم ... خوب توابع static نمي تونن به اجزاي فرم دسترسي داشته باشن ...!
ولي يه راهي هست ... من خودم اينکار رو نميپسندم ولي فعلا تنها راه هستش ... اونم اينکه اجزايي را که بهشون احتياج داري به صورت پارامتر براي متدت بفرستي ...!
کار ميکنه ولي من نتونستم invisible control ها رو کنترل کنم ...!