在后面的代码中查找图像

时间:2012-10-24 12:19:50

标签: c# asp.net

我想使用find控制方法在设计器上查找图像并使其可见,但我一直得到null

这是我的代码:

foreach (ImageShow image in imageList)
{
    Image Showimage = (Image)FindControl(image.imageName);
    Showimage.Visible = true;
}

非常感谢任何帮助, 提前致谢

2 个答案:

答案 0 :(得分:5)

FindControl不会在整个控件层次中搜索,我认为这是一个问题。

尝试使用以下方法:

public static T FindControlRecursive<T>(Control holder, string controlID) where T : Control
{
  Control foundControl = null;
  foreach (Control ctrl in holder.Controls)
  {
    if (ctrl.GetType().Equals(typeof(T)) &&
      (string.IsNullOrEmpty(controlID) || (!string.IsNullOrEmpty(controlID) && ctrl.ID.Equals(controlID))))
    {
      foundControl = ctrl;
    }
    else if (ctrl.Controls.Count > 0)
    {
      foundControl = FindControlRecursive<T>(ctrl, controlID);
    }
    if (foundControl != null)
      break;
  }
  return (T)foundControl;
}

用法:

Image Showimage = FindControlRecursive<Image>(parent, image.imageName);

在您的情况下,父母是这样的,例如:

Image Showimage = FindControlRecursive<Image>(this, image.imageName);

您可以在没有ID的情况下使用它,然后会找到第一次出现的T:

Image Showimage = FindControlRecursive<Image>(this, string.Empty);

答案 1 :(得分:1)

foreach (ImageShow image in imageList)
{
    Image showimage = FindControl(image.imageName) as Image;
    if(showimage != null)
    {
         showimage .Visible = true;
    }
}