الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تغير حالة ادا Checkbox بناء على ادا اخرى

بدأه sunbol في 14 فبراير 2009 · 10 رد · 1,121 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

اخواني الكرام

عندي مجموعة من CheckBox

كيف يمكنني ان اجعل عندما يكبس المستخدم على احداها تنمسح باقي CheckBox الاخرى

وذلك عن طريق الجافا اسكربت او اي طريقه اخرى دون الرجوع الى السيرفر وعمل ريفرش

كنت استخدم الكود التالي

  <tr>
	 <td width="74" align="right" valign="top" class="txt2" style="padding-top:2px ">
	 <b class="txt1"> Services:</b></td>
	<td width="58" align="center" > <input id="services_exc" type="checkbox" onclick="return services_exc_onclick();false" />
	 </td>
	 <td width="58" align="center" > <input id="services_good" type="checkbox" onclick="return services_good_onclick()" />

	 <%--btnclear_onclick();return false;"--%>
	 </td>
	 <td width="58" align="center" > <input id="services_ok" type="checkbox" onclick="return services_ok_onclick()" />
	 </td>
	 <td width="58" align="center" > <input id="services_bad" type="checkbox" onclick="return services_bad_onclick()" />
	 </td>
	 </tr>

واقوم باستدعاء الفنشن من كود الجافا سكربت  وهو التالي
  <script language="javascript" type="text/javascript" >



function services_exc_onclick() {
if (services_exc.checked==true)
services_good.checked =false;
services_ok.checked =false;
services_bad.checked =false;
}

function services_good_onclick() {
if (services_good.checked==true)
services_exc.checked =false;
services_ok.checked =false;
services_bad.checked =false;
}

function services_ok_onclick() {
if (services_ok.checked==true )
services_exc.checked =false;
services_good.checked =false;
services_bad.checked =false;
}

function services_bad_onclick() {
if (services_bad.checked==true)
services_exc.checked =false;
services_good.checked =false;
services_ok.checked =false;
}

</script>

ولكن للاسف لا يعمل الكود كما يجب

ارجو المساعده لمن يعرف الحل

36cm7.gif
#3

السلام عليكم ورحمة الله وبركاته

أخي الكريم يمكن عمل ذلك بسهولة مع استخدام الـ AJAX

فإذا كنت تريد استخدام الـ AJAX فأخبرني وسأكتب لك الكود المناسب إن شاء الله

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#4

شكرا اخواني

بالنسبه للاخ c++

للاسف لم ينجح معي حسب الطريقه المدكوره

رغم وجود اختلافات

ولكن حاولت اخد ما يفيدني منها كفكره ولكن للاسف لم يعمل

الاخ Mr.Mando

شكر لمشاركتك معنا

بالفعل انا استخدم الاجاكس في مواقعي وياريت لو يكون في حل عن طريقه

هل لو تكرمت تضع لنا الحل مع قليل من الشرح

علما انني سوف استخدمها اكثر من مره في نفس الصفحه

36cm7.gif
#5
sunbol كتب:
شكرا اخواني

بالنسبه للاخ c++

للاسف لم ينجح معي حسب الطريقه المدكوره

رغم وجود اختلافات

ولكن حاولت اخد ما يفيدني منها كفكره ولكن للاسف لم يعمل

ممكن توضح ليش ما نجحت معك انا مجربها

abdullahf4.jpg
#6

السلام عليكم ورحمة الله وبركاته

بما أنك سوف تستخدم الأجاكس اكثر من مرة فيجب مراعاة الآتي

أولا كما تعلم أنه يجب وضع أداة ScriptManager حتى تعمل أدوات الأجاكس في الصفحة

إذا كنت ستستخدم ماستر بيج فقم بوضع الـ ScriptManager فيها ولا تضعها في الصفحات التي ستعمل

تحت هذه الماستر بيج ولك فقط ضع أداة UpdatePanel

-----------------------------------

نأتي لحل المشكلة

أولا ضع أداة Update Panel في صفحتك

ضع بداخلها جميع الـ CheckBoxes المراد التعامل معها

قم بتغيير خاصية AutoPostBack الخاصة بجميع الـ CheckBoxes إلى true

ونأتي إلى الكود

ضع الكود التالي

  void chk(ControlCollection coll, CheckBox checkboxctrl)
	{
		foreach (Control ctrl in coll)
		{
			if (ctrl is CheckBox)
			{
				((CheckBox)ctrl).Checked = false;
			}
		}
		checkboxctrl.Checked = true;
	}

وداخل كل CheckBox نضع الكود التالي تحت حدث CheckedChanged

if (CheckBox1.Checked == true)
			chk(Panel1.Controls, CheckBox1);

مع مراعاة تغيير CheckBox1 إلى إسم الأداة التي تضع الكود تحتها

-----------------

شرح الكود :

سيقوم الكود الأخير باستدعاء void مع بارمتر من نوع ControlCollection و CheckBox

الـ ControlCollection سيكون هو الـ UpdatePanel.Controls والـ CheckBox هو اسم الأداة التي سيتم الضغط عليها

سيقوم الكود بحذف علامة الصح من جميع الأدوات التي من نوع CheckBox الموجودة داخل الـ UpdatePanel ثم يضعها فقط على الأداة التي تم الضغط عليها فقط وبذلك يتم عمل المطلوب

أسف على الإطالة ولكن هذا لأن الموضوع يطلبه الكثيرون في حين أنه بسيط

وأتمنى إنك تكون استفدت منه

إذا واجهت أي مشاكل فاكتبها في ردك التالي وسنعمل على حلها إن شاء الله

بالتوفيق للجميع

تم تعديل هذه المشاركة بواسطة Mr.Mando في 14 فبراير 2009 في 23:00

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#7

راجع هذا الرابط

مستخدم jquery افضل من الطريقه التي استخدمها الاخ Mr.Mando

abdullahf4.jpg
#8

اذا كان يجب اختيار checkbox واحد فقط في جميع الحالات فلماذا لا تستخدم RadioButtonList Control

#9

السلام عليكم ورحمة الله وبركاته

أخ سنبل

إذا كنت تختار اختيار واحد فقط في جميع الحالات فافعل مثلما قال الأخ أحمد الباز فهذه هي الطريقة المثالية

أما الشرح والكود الذي وضعته فهو يستخدم فقط في حالة ما إذا كنت تريد اختيار بعض الخيارات المتاحة

مع العلم أن عمل ذلك بالجافا سكريبت سيكون أفضل ولكن للأسف انا معرفتي بها قليلة وهذا الكود يفي بالغرض

بالتوفيق

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#10

شكرا اخي الكريم

ولكن المقصود هو استخدامها على مجموعات وكل مجموعه منفصله عن الاخرى كمثال الصوره التى في المرفقات

فكل سطر هو لحاله

كيف يمكن عمل ذلك

post-83960-1244291211_thumb.gif

تم تعديل هذه المشاركة بواسطة sunbol في 6 يونيو 2009 في 15:27

36cm7.gif
#11

up

36cm7.gif

مواضيع مشابهة