PDA

View Full Version : سوال: مشكل در Masterpage و Ajax



abbasegold
سه شنبه 30 مهر 1387, 12:10 عصر
(مديريت محترم انجمن سعي كردم نام پست مناسب باشد، خواهش مي كنم حذف نفرمائيد)

سلام

من در پروژه ام مشكلي دارم و سعي مي كنم كامل آن را شرح دهم :

يك Masterpage و يك صفحه داخلي به نام index دارم. در Masterpage يك Table بصورت runat=server و visible=false وجود دارد.

در index هم يك button وجود دارد كه در رويداد onClick آن با استفاده از كد زير Table فعال مي شود :

this.Master.FindControl("TableName").Visible=false

در حالت عادي اين كار بدرستي انجام مي شود ولي زماني كه button را در يك UpdatePanel قرار مي دهم ديگر اين كار انجام نمي شود. يعني Table درون Masterpage فعال نميشود.

نكته ديگر اينكه وقتي Trace‌ميكنم خاصيت Visible اين Table از false به true تغيير حالت مي دهد ولي Table نشان داده نمي شود.

kiosksoft
سه شنبه 30 مهر 1387, 12:37 عصر
دکمه ای که گذاشتی فقط در قسمت آپدیت پنل عمل میکنه پس باید جدولت هم در آپدیت پنل باشه .

abbasegold
سه شنبه 30 مهر 1387, 12:52 عصر
دوست عزيز من كه عرض كردم Table در Masterpage است !!!

kiosksoft
سه شنبه 30 مهر 1387, 13:00 عصر
دکمه ای که گذاشتی فقط در قسمت آپدیت پنل عمل میکنه پس باید جدولت هم در آپدیت پنل باشه .


از جاوا اسکریپت استفاده کنید .

mahdi_farhani
سه شنبه 30 مهر 1387, 14:21 عصر
هنگام اجرای برنامه Viewsource بزن ببین نام Tablet چه تغییر کرده و اونو Find کن.

kiosksoft
سه شنبه 30 مهر 1387, 15:00 عصر
هنگام اجرای برنامه Viewsource بزن ببین نام Tablet چه تغییر کرده و اونو Find کن.

جاوااسکریپت با کنترل های سمت کلاینت کار میکنه . پس نیازی به این کار هم نیست هرچند درست فرمودید .

mahdi_farhani
سه شنبه 30 مهر 1387, 15:18 عصر
ببخشید من اشتباه برداشت کردم .(شرمنده )
بله همون طور که دوستمون گفتن Table هم باید تو Updatepanel باشه .
شما میتونی اینکارو بکنی . Tbale درون Masterpage را داخل Updatepanel بزاری و همچنین و Button که در Index داری رو هم در یک Updatepanel دیگه بزاری ، حالا دیگه مشکلت حل میشه

hadi000333
سه شنبه 30 مهر 1387, 15:22 عصر
جاوااسکریپت با کنترل های سمت کلاینت کار میکنه . پس نیازی به این کار هم نیست هرچند درست فرمودید .

دوست عزیز در asp.net شیوه ای دیگری برای نا م گذاری در سمت کلاینت دارد.
برای مثال وقتی شما از مستر استفاده می کنید به ID کنترل های داخل Content شما یک پسوند ctl00_ اضافه میشه و .....
پس به گفته ی دوستمون ببیشتر توجه کن شاید مشکلت بر طرف شه
این رو به این خاطر گفتم که کنترلت رو run at server کردی.
یک سوال دارم آیا Button رو در trigger معرفی کردی؟

abbasegold
چهارشنبه 01 آبان 1387, 12:05 عصر
دوستان عزيز نياز به تغيير ID نيست. قبلاً هم عرض كردم كه وقتي Trace مي كنم Table را پيدا مي كند و حتي Visible آن از false به true تغيير مي كند اما نمايش داده نمي شود.

براي تست كار شما را هم انجام دادم و وقتي ID‌سمت كلاينت Table را قرار دادم آن را پيدا نكرد.

Button را هم در Trigger تعريف نكردم و آن را در UpdatePanel قرار داده ام.

همچنين به دلايلي نمي خواهم در MasterPage يك UpdatePanel قرار دهم.

خواهش مي كنم اگر كسي مي تواند كمكم كند چون شديداً و فوراً به آن نياز دارم.

kiosksoft
چهارشنبه 01 آبان 1387, 12:39 عصر
یه جا اشتباه میکنید .. سورس رو بزارید اینجا ...

milade
چهارشنبه 01 آبان 1387, 15:10 عصر
لطفا سورس html رو از مرورگر بگیر بزار اینجا(پیوست نکن(اگه زیاد نیست))

deviant
چهارشنبه 01 آبان 1387, 16:52 عصر
من فکر می کنم چون button توی updatepanel است ، و برای تغییر visible جدول باید صفحه کلا یکبا postback بشه ، مشکل بوجود میشه.
ببین می تونی جدولتو به عنوان یک trigger به updatepanel اضافه کنی. شاید اینجوری بشه.

abbasegold
چهارشنبه 01 آبان 1387, 21:46 عصر
من هم فكر مي كنم صحبت آقاي deviant درست هست.

توي چند تا انجمن خارجي جستجو كردم. گفته بودند كه بايد Table درون Masterpage را هم در يك updatePanel ديگر قرار بدي و نوع آن UpdatePanel را Conditional بكني و در Event كليد UpdatePanel.Update را استفاده كني و يا از جاوا اسكريپت استفاده كني.

من قبلاً هم گفتم كه به دلايلي در Masterpage نمي خواهم از UpdatePanel استفاده كنم. اگر شما روش ديگري مي دانيد يا ميتوانيد با استفاده از جاوا اسكريپت مرا راهنمايي كنيد خواهشمندم لطف كنيد.

hadi000333
پنج شنبه 02 آبان 1387, 12:15 عصر
نمی دونم به دردت می خوره ولی
برای پست بک از طریق جاوا اسکریپ این طوری عمل می شه:

__doPostBack('ClientID', e);
بعد:
EnableEventValidation="false"
ValidateRequest="false"