如何在Datalist1中找到控件?

时间:2011-01-07 16:50:40

标签: asp.net

嗨,任何人都可以告诉我如何找到DataList控件内的DataList?它将Error Object设置为Instance。

我正以这种方式找到控件:

DataList dl =((DataList)(DataList1.FindControl(“DataList2”)));

这是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

DataList2是直接在DataList1中还是在DataList1的子组件内?

FindControl方法不会深入搜索控件。

我之前写了一个方法来做这个,我会在这里发布它的使用方法:

public static IEnumerable<Control> 
                               GetDeepControlsByType<T>(this Control control)
    {
        foreach(Control c in control.Controls)
        {
            if (c is T)
            {
                yield return c;
            }

            if(c.Controls.Count > 0)
            {
                foreach (var x in c.GetDeepControlsByType<T>())
                {
                  yield return x;
                }

            }
        }
    }

答案 1 :(得分:0)

这取决于您何时想要找到控件和哪个控件。如果你只想获得所有这些,你可以遍历下面的DataList项。假设您要访问DataList中的CheckBox。

foreach (DataListItem item in DataList1.Items)
{
  if (item.ItemType == ListItemType.Item ||item.ItemType == ListItemType.AlternatingItem)
  {
     CheckBox chb=(CheckBox) item.FindControl("CheckBox1");
     if (chb!= null)
     {
        //you can access chb.Checked value
     }
  }
}