Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET C#-如何在UserControl中为复选框列表设置公共属性?_C#_Asp.net_User Controls_Properties_Checkboxlist - Fatal编程技术网

ASP.NET C#-如何在UserControl中为复选框列表设置公共属性?

ASP.NET C#-如何在UserControl中为复选框列表设置公共属性?,c#,asp.net,user-controls,properties,checkboxlist,C#,Asp.net,User Controls,Properties,Checkboxlist,我很难弄明白这一点。如果我在usercontrol中有一个复选框列表,我如何循环(或者真正地检查)列表中的复选框 正如我在下面的评论中所说,我希望通过控件本身的属性公开选中的项 在您的页面中,您可以执行以下操作 var checkboxes = (CheckBoxList)userControl1.FindControl("checkBoxList1"); 但在我看来,一个更好的解决方案是通过属性或方法公开选中的项 在用户控制中 public string[] CheckedItems {

我很难弄明白这一点。如果我在usercontrol中有一个复选框列表,我如何循环(或者真正地检查)列表中的复选框


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

在您的页面中,您可以执行以下操作

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();
    }
}

您也可以只返回属性中的
checkbox1.Items
,但这不是很好的封装

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

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

    }
public IList SelectedItems{
得到{
返回checkbox1.Items.Cast.Where(i=>i.Selected);
}
}

没错,这就是我想要做的-通过属性公开选中的项。仅使用.net 3.0=\
  public IList<string> SelectedItems{
       get {
          return checkbox1.Items.Cast<ListItem>.Where(i => i.Selected).Select(j => j.Value).ToList();
       }

    }