ASP.NET C # - كيف يمكنني تحديد الممتلكات العامة لCheckBoxList داخل على UserControl؟

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

سؤال

وأواجه صعوبة في كشف ذلك. إذا كان لدي checkboxlist داخل على UserControl، كيف يمكنني حلقة من خلال (أو تحقق، حقا) ما مربعات يتم التحقق في القائمة؟

وكما قلت في التعليق أدناه، أود أن فضح العناصر المحددة من خلال خاصية في عنصر التحكم نفسه.

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

المحلول

ومن الصفحة الخاصة بك يمكنك القيام به

var checkboxes = (CheckBoxList)userControl1.FindControl("checkBoxList1");

ولكن من شأنه أن أفضل حل في رأيي أن يكون لفضح العناصر المحددة من خلال خاصية أو أسلوب.

في التحكم المستخدم

public string[] CheckedItems {
    get {
        List<string> checkedItems = new List<string>();
        foreach (ListItem item in checkbox1.Items)
            checkedItems.Add(item.Value);

        return checkedItems.ToArray();
    }
}

وبعد ذلك في صفحة

var checkedItems = userControl1.CheckedItems; 

ويمكنك أيضا أن مجرد العودة checkbox1.Items في الممتلكات، ولكن ليس هذا هو التغليف الجيد.

نصائح أخرى

إذا كنت تستخدم صافي 3.5، يمكنك إنشاء خاصية للقراءة فقط يستخدم LINQ لإرجاع IList من مجرد القيم المختارة:

  public IList<string> SelectedItems{
       get {
          return checkbox1.Items.Cast<ListItem>.Where(i => i.Selected).Select(j => j.Value).ToList();
       }

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