PDA

View Full Version : مشکل بزرگ DeafultButton (کلید پیش فرض) هنگامی که در اصل چند فرم داریم .



Chabok
سه شنبه 30 آبان 1385, 18:52 عصر
با عرض سلام خدمت دوستان برنامه نویس

این بحث قبلا در تاپیک زیر مطرح شده بود . ولی بی جواب ماند .
http://barnamenevis.org/forum/showthread.php?t=31767

همگی میدونید که در سایر زبان های برنامه نویسی تحت وب مثل ASP,Php,... فرم هایی که
ساخته می شوند خود کاری انجام نمیدهند . بلکه اطلاعات را به صفحه های داینامیک پاس داده
و در آنجا پردازش می شوند . حالت دومش هم اینه که روی خودشون پست بک میشوند و همون جا
پردازش می شوند . در این زبان ها شما به هر تعدادی که بخواهید میتونید فرم داشته باشید .

مشکل من از اینجا شروع میشه که در ASP.net ما نمیتوانیم بیش از یک فرم Runat Server داشته باشیم .
و اگر بخواهیم مثلا 2 قسمت پر کردن اطلاعات داشته باشیم باید همه رو روی فرم اصلی بچینیم .

حالا مشکل اینجاست که در این صورت کلید پیش فرض کلیدی است که بالاتر قرار گرفته باشد و
اگر شما در هنگام پر کردن فرم پایین کلید Enter رو بزنید دکمه پیش فرض که دکمه فرم بالایی باشه
Fire میشه و فرم بالایی ارسال میشه .

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

کنترل Panel هم خاصیتی به نام DefaultButton داره که کلید پیش فرضی برای تگ Div تعریف میکنه
که اون هم مشکلات زیادی داره .یکی از مشکلاتش هم همینه که اگر با Validator ها با هم به کار برند
قاط میزنه و بدون چک کردن مقادیر صفحه رو ارسال میکنه .

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

ببخشید که این همه زیاد نوشتم . در ضمن اگه از نظر علمی مطالب بالا اشتباه داره به بزرگی خودتون ببخشید .
چون اینها تجربه شخصی خودم از طراحی وب بوده .

از همگی ممنونم .

shahroozj
چهارشنبه 01 آذر 1385, 08:33 صبح
ببخشید من متوجه نشدم بالاخره مشکل شما چی است؟
ایا مشکل دو فرم در یک صفحه دارید ؟
یا مشکل validation فرم دارید ؟
یا مشکل Enter روی کلید ؟

Chabok
چهارشنبه 01 آذر 1385, 15:55 عصر
ممنونم از توجه شما .
مشکل من دقیقا Enter زدن روی فرم هاست .
یا Enter زدن روی کلیدی که در فرم پیش فرض است .

مثل اینه که شما داری فرم ثبت نام رو پر می کنی .در صورتیکه کلید جستجوی بالای سایت
فعال است و کلید ثبت نام فوکوس ندارد .یعنی با زدن Enter عمل جستجو انجام میشود .
نه عمل ثبت نام .

امیدوارم مشکل واضح شده باشه . ممنونم از شما .

Behrouz_Rad
چهارشنبه 01 آذر 1385, 19:28 عصر
ASP.NET 2.0
خاصیت "defaultbutton" تگ "form" رو در فایل aspx برابر با نام دکمه ی پیش فرضت قرار بده.

موفق باشید.

nazaninam
پنج شنبه 02 آذر 1385, 11:39 صبح
دوست من ، من خیلی با این مشکل سرو کله زدم
بیشتر راه ها جواب نداد و خاصیت "defaultbutton" تگ "form" وقتی از masterpage ها استفاده کنیم دیگه معنی پیدا نمیکنه
راهی که من استفاده میکنم اینه:
باید بدونی که کاربر چه وقتی دکمه enter رو فشار میده ؟
جواب اینه که وقتی فرم رو بصورت کامل پر کرد یعنی وقتی تکس باکس آخر رو پر کنه
خوب کافیه کد زیر رو در رویداد مربوط به لود شدن صفحه بنویسید:




your_textbox.Attributes.Add("onkeypress", "if (event.keyCode == 13){" + your_button.ClientID + ".click();return false;}")


کاری که این کد انجام میده فرمان enter رو صادر میکنه!
این کد برای لوگین فرم ها خیلی خوبه
جاهای دیگه هم تست کنید خبرشو بدید
موفق باشی

Behrouz_Rad
پنج شنبه 02 آذر 1385, 14:19 عصر
خاصیت "defaultbutton" تگ "form" وقتی از masterpage ها استفاده کنیم دیگه معنی پیدا نمیکنه
خیر!
در این حالت می تونی از خاصیت UniqueID دکمه استفاده کنی.

موفق باشید.

Chabok
پنج شنبه 02 آذر 1385, 19:08 عصر
ازتمامی دوستان ممنونم .
خواهشا یک نگاه به سایت زیر بیندازید (کار خودمه :لبخند:)
http://www.samanabyar.com/fs

مشکلات :
1.همیشه دکمه جستجو فعال است (به دلیل وجو یک فرم که کل صفحه رو پوشانده و وجود تنها همین کلید) .

2.در صفحه تماس با ما برای پر کدن فرم دکمه فعال جستجو است .

آقای بهروز راد . اگر DefaultButton فرم رو کلید ارسال فرم تماس با ما قرار بدهم دیگه جستجو
کار نمیکنه .

در ضمن از Nazaninam ممنونم . کد خوبی ارائه داده بودین .ولی هنوز توی استفاده اش شک دارم .
ممنون میشم راهنمایی کنید .

در ضمن مسائل مطرح شده در IE خیلی بهتر از FireFox قابل مشاهده است.

nazaninam
جمعه 03 آذر 1385, 08:31 صبح
بهروز جان میشه در مورد نحوه کار uniqid توضیح بدید

Behrouz_Rad
یک شنبه 05 آذر 1385, 22:51 عصر
به MSDN مراجعه کن.

Chabok
دوشنبه 06 آذر 1385, 09:51 صبح
آقای بهروز راد .
راستش استفاده از DefaultButon تقریبا چیزی شبیه کد Nazaninam در می آید .

یعنی میاد در OnKeyPress چک میکنه اگه Enter بود کلید مربوطه رو فایر میکنه .
ولی اگه بشه واقعا کلید پیش فرض باشه خیلی عالی میشه .
یه جوری که مثلا دو تا فرم داشته باشیم تا هر کدوم یه Submit داشته باشند .

من منتظرم تا جواب شما و سایر دوستان رو بدونم .