Checkboxlist + الحصول على بطاقة الهوية من كل خانات

StackOverflow https://stackoverflow.com/questions/1640374

  •  08-07-2019
  •  | 
  •  

سؤال

كيف يمكنني الحصول على هذا الرقم من كافة خانات الاختيار التي تم إنشاؤها بواسطة checkboxlist ، datatable كما في البيانات المصدر ؟

أعتقد أن استخدام "OnDataBinding" الحدث من مربع القائمة, ولكن أنا لا أرى كيف يمكن أن تساعد لي.

أنا باستخدام C#

لا أعتقد أن الحصول على هذا الرقم من كافة خانات الاختيار التي تم إنشاؤها بواسطة تحديد خانة الاختيار قائمة ممكنة ، لذلك أعتقد سوف مو الأدوات الطريقة هو الشيء الصحيح القيام به.

أي أفكار ؟

شكرا

هل كانت مفيدة؟

المحلول

ومن الناحية المثالية كنت تريد أن نعلق فقط معالجات انقر فوق الحدث لجميع القوائم مربع الخاص بك في حال domReady وهذا سيخلق وظيفة أبسط من ذلك بكثير مع موتولز. ومع ذلك، يمكنك الاحتفاظ التعليمات البرمجية الخاصة بك كما هو إذا كنت تفضل وفقط يصبح لديك 2 وظائف أبسط قليلا.

function ToggleSelection(ctrl, sender) {
  var checkboxes = $(ctrl).getElements('input[type=checkbox]');
  checkboxes.set('checked', sender.checked);
}

function ToggleSelectAll(ctrl, sender) {
  var fAllChecked = ($(sender).getElements('input:checked').length == $(sender).getElements('input[type=checkbox]').length)
  $(ctrl).set('checked', fAllChecked);
}

ويمكنك تعيين خصائص بأكملها مجموعة العناصر في آن واحد، لا تحتاج إلى حلقة من خلالهم. في وظيفة 2ND، أنا التحقق من عدد من العناصر التي يتم فحصها مقابل العدد الإجمالي للخانات وإذا كانت تطابق هذا يعني فحصت هم جميع.

نصائح أخرى

هل تستخدم VB أو C#..يرجى الوسم وفقا لذلك

يمكن أن يكون لديك قائمة أو سلسلة تسمى strchklist

VB.NET

For Each li In CheckBoxList1.Items 
       If li.Selected Then 
            strchklist += li.Id 
      End If 
  Next 

C#

foreach (ListItem li in CheckBoxList1.Items){ 
       If li.Selected
            strchklist += li.Id ;}

وو<asp:ListItem> ليست في الحقيقة وبالتالي التحكم في حد ذاته ليس لديه ID. إذا كنت ترغب في الوصول إليه في برنامج العميل النصي إضافة سمة جديدة يمكنك الرجوع. (نعم، خلال OnDataBinding) تذكر أن هذه ليست استمرت في حالة العرض ولكن!

وماذا بالضبط هل تحاول تحقيقه؟ قد تساعد على وضع بعض الشيء.

مختلفة تماما الإجابة...

على CheckBoxList قليلا من الغريب داك...على عكس غيرها من الضوابط ، فإنه لا يكون منطقيا الخرائط واضحة HTML بناء.فإنه في الواقع يجعل خانات متعددة مع مشتق معرفات.تلك المعرفات يبدو أن ولدت كما CheckBoxList.ClientID + "_" + ItemIndex.

يمكنك التحقق من ذلك من خلال النظر في مصدر الصفحة.داخليا ، يبدو أن هوية الفرد خانة الاختيار التحكم هو مجرد مؤشر ، ومن ثم تقديمها مع CheckBoxList كما NamingContainer.يمكنك استخدام العاكس هو ترى كيف CheckBoxList التحكم يجعل الإخراج.

لا تزال بقعة جيدة على مسج.أسهل الآن أنت تعرف معرفات.

واستيقظت هذا الصباح والفكر للقيام بذلك (cblUSEquities هي قائمة مربع)

cblUSEquities.Attributes.Add("onclick", "javascript:alert('Clicked');");

وهذا يضيف التنبيه إلى الجدول الذي يولد قائمة مربع. شيء واحد هو أن نلاحظ، التنبيه يظهر مرتين إذا كنت فوق النص من مربع مرة واحدة إذا كنت اضغط على مربع. أعتقد أن هذا الحل بالنسبة لي.

وراجع للشغل، لم اعتقد ابدا ان رمز أعلاه ستعمل ...

وP.S وردا على سؤالي الخاص لأنني أردت أن كتابة بعض الرموز، وهو ما لا يمكن القيام به باستخدام مربع التعليق.

في روح ستاكوفيرفلوو، وصلت إلى شيء الذي يعمل في السيناريو الخاص بي ولكن وصف والسؤال هو مختلف؟ ماذا أفعل؟ تحرير المسألة وبمناسبة هذا النحو الجواب؟

وكنت قادرا على القيام بذلك باستخدام موتولز وهذا هو رمز.

function ToggleSelection(ctrl, sender)
{
    var cblCtrl = $(ctrl);
    var Allcbs = cblCtrl.getElements('input');

    for(var i=0; i<Allcbs.length; i++)
        Allcbs[i].checked = sender.checked;
}

function ToggleSelectAll(ctrl, sender)
{
    var AllTrueCount = 0;
    var cblCtrl = $(ctrl);
    var Allcbs = sender.getElements('input');

    for(var i=0; i<Allcbs.length; i++)
        if(Allcbs[i].checked)
            AllTrueCount++;

    if(AllTrueCount == Allcbs.length)
        cblCtrl.checked = true;
    else
        cblCtrl.checked = false;
}

وC # رمز التي تدعو وظائف جافا سكريبت

//Binding event to the checkbox list
cblUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelectAll('{0}', this);", chkAllUSEquities.ClientID));

//binding event to the select all checkbox
chkAllUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelection('{0}', this);", cblUSEquities.ClientID));

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

cblUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelectAll('{0}', this);", chkAllUSEquities.ClientID));

والتي ستضيف الحدث onclick إلى الجدول الذي يولد قائمة مربع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top