2

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

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

4

2 に答える 2

3

あなたのページからあなたはすることができます

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が、それは適切なカプセル化ではありません。

于 2009-10-28T19:50:39.350 に答える
1

.net 3.5 を使用している場合は、LINQ を使用して選択した値だけの IList を返す読み取り専用プロパティを作成できます。

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

    }
于 2009-10-28T20:13:06.373 に答える