【问题标题】:ASP.NET C# - How do I set a public property for a CheckBoxList inside a UserControl?ASP.NET C# - 如何为 UserControl 内的 CheckBoxList 设置公共属性?
【发布时间】:2009-10-28 19:42:47
【问题描述】:

我无法弄清楚这一点。如果我在用户控件中有一个复选框列表,我如何循环(或检查,真的)列表中选中了哪些框?

正如我在下面的评论中所说,我想通过控件本身的属性公开选中的项目。

【问题讨论】:

    标签: c# asp.net user-controls properties checkboxlist


    【解决方案1】:

    从你的页面你可以做

    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,但这不是很好的封装。

    【讨论】:

    • 对,这就是我想要做的——通过一个属性暴露被检查的项目。
    【解决方案2】:

    如果您使用的是 .net 3.5,则可以创建一个只读属性,该属性使用 LINQ 来返回仅包含选定值的 IList:

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

    【讨论】:

    • 仅勉强使用 .net 3.0 =\
    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 2021-07-20
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多