ASP.NET C # - Как установить открытое свойство для CheckBoxList внутри UserControl? - PullRequest
2 голосов
/ 28 октября 2009

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

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

Ответы [ 2 ]

3 голосов
/ 28 октября 2009

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

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

1 голос
/ 28 октября 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();
       }

    }
...