質問

これを理解するのに苦労しています。ユーザーコントロール内にチェックボックスリストがある場合、リストでチェックされているボックスをどのようにループ(または実際にチェック)するのですか?

以下のコメントで述べたように、コントロール自体のプロパティを介して、チェックされたアイテムを公開したいと思います。

役に立ちましたか?

解決

あなたのページからできること

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 を返すこともできますが、これは適切なカプセル化ではありません。

他のヒント

.net 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