ASP.NET C#. Как установить общедоступное свойство для CheckBoxList внутри UserControl?

Мне трудно понять это. Если у меня есть список флажков внутри пользовательского элемента управления, как мне прокрутить (или проверить, действительно), какие поля отмечены в списке?

Как я уже сказал в комментарии ниже, я хотел бы предоставить отмеченные элементы через свойство в самом элементе управления.


person somacore    schedule 28.10.2009    source источник


Ответы (2)


Со своей страницы вы можете сделать

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 в свойстве, но это не очень хорошая инкапсуляция.

person Bob    schedule 28.10.2009
comment
Правильно, это то, что я хочу сделать - выставить проверенные элементы через свойство. - person somacore; 28.10.2009

Если вы используете .net 3.5, вы можете создать свойство только для чтения, которое использует LINQ для возврата IList только выбранных значений:

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

    }
person Dan Appleyard    schedule 28.10.2009
comment
Только почти не используя .net 3.0 =\ - person somacore; 28.10.2009