コードスニペット

ListViewのItemTemplateに配置されたRadioButtonを操作しようとする過程で生まれたコードスニペット

FindControlしてIEnumerableで返してくれる拡張メソッド。

public static class ListViewExtensions
{
    public static IEnumerable<T> ItemsFindControl<T>(
        this ListView listView,
        string controlID
        ) where T : Control
    {
        foreach (var item in listView.Items)
        {
            var control = item.FindControl(controlID) as T;
            if (control != null)
            {
                yield return control;
            }
        }
    }
}

使用イメージ。

foreach (var rb in this.ListView1.ItemsFindControl<RadioButton>("RadioButton1"))
{
    rb.InputAttributes.Add("onchange", "alert('" + rb.Text + "')");
}