PDA

View Full Version : خواندن مقادیر ردیف کنونی GridView با استفاده از Web Service و Ajax (بدون Postback)



mohsen_zelzela00
یک شنبه 01 فروردین 1389, 11:19 صبح
با سلام خدمت دوستان عزیز

من یک grid دارم که درون اون یک ImageButton قرار دادم که وقتی کاربر بر روی آن کلیک بکنه اطلاعات اون رکورد در textboxهای بالای grid نشون داده بشه من خوندن اطلاعات اون رکورد رو با استفاده از WebServis انجام دادم که postback رخ ندهد ولی چون دارم از کنترل های asp استفاده می کنم(سمت سرور) با اینکه خود دکمه سمت سرور هیچ کاری انجام نمی دهد ولی باز یک postback به همراه دارد(نمی تونم از کنترل های HTML استفاده کنم چون از
CommandArgument='<%# Bind("CUSTOMER_ID") %>
دارم استفاده می کنم
به نظر شما دوستان من باید از چه کنترلی استفاده کنم و یا برای این ImageButton چه کار کنم که وقتی کاربر بر روی آن کلیک کرد postback رخ ندهد.

(نمی دونستم عنوان تاپیک رو چی انتخاب کنم که مناسب این موضوع باشه برای همین این عنوان رو انتخاب کردم ممنون میشم اگه مدیران این تاپیک رو حذف نکنند)


با تشکر

مهدی کرامتی
سه شنبه 03 فروردین 1389, 00:12 صبح
مثال ضمیمه شده را دریافت کنید.

توضیحات (مرحله به مرحله):

1- برای خواندن اطلاعات از دیتابیس یک وب سرویس بنام GetPerson تعبیه شده است. ورودی متد GetPersonData وب سرویس فوق ID کاربر مورد نظر و خروجی آن یک object از جنس Person (کلاس Person جهت تسهیل انتقال داده ها بین Client و Web Service ایجاد شده است) بر می گرداند.

2- برای اینکه بتوانیم این وب سرویس را از طریق Client Script فراخوانی کنیم آن را در مشخصه Services از کامپوننت ScriptManager که در فرم اضافه کرده ایم معرفی کرده ایم. به این ترتیب تمامی متدهای این وب سرویس و Data Type ها مورد استفاده آن برای استفاده در Java Script در دسترس قرار می گیرند.

3- برای فراخوانی متد فوق از وب سرویس و تحویل گرفتن نتیجه آن 2 تابع در Java Script به نامهای GetPerson و GetPersonCompleted تعریف شده که اولی کار فرخوانی وب سرویس را انجام می دهد و دومی بعنوان Callback Function عمل می کند و نتیجه فرخوانی متد مذکور را دریافت می کند و در TextBox ها قرار می دهد.

4- برای جلوگیری از PostBack در ItemTemplate ستون Commands از یک Html Input Button استفاده کرده ام:

<input type="button" value="Show Data" onclick="GetPerson(<%# Eval("ID") %>)"/>
ورودی تابع GetPerson که در رویداد onclick دکمه فوق فراخوانی می شود با استفاده از تابع Eval از Data Source گرید دریافت می شود.

mehdima
سه شنبه 03 فروردین 1389, 11:57 صبح
با سلام

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

نمونه مثال رو ببینید.