在控制其他字段后,将细节视图中的imagebutton设置为可见

本文关键字:imagebutton 设置 视图 细节 其他 控制 字段 | 更新日期: 2023-09-27 17:58:06

我有一个详细视图,其中有一个字段和一个image按钮。如果字段的值为空,我希望将imagebutton设置为不可见,如果它不为空,则我希望看到imagebutton。

这是我的代码:

//for (int i = 0; i < DetailsView1.Fields.Count; i++)
//{
      Label lbl1 = (Label)DetailsView1.FindControl("Label1");
      ImageButton img = (ImageButton)DetailsView1.FindControl("ImageButton1");
      if (lbl1 != null)
      {
          LabelABC.Text = lbl1.Text.ToString();
          img.Visible = true;
      }
      else
      {
          img.Visible = false;                    
      }
//}

我不确定这里是否需要for循环。我也尝试过使用.Rows[5].Cells[1].Find...,但当时出现了超出范围的错误。

用我在上面发布的代码我得到的错误说:

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

行:img。Visible=false;

关于如何解决这个问题,有什么建议吗?谢谢你抽出时间。

在控制其他字段后,将细节视图中的imagebutton设置为可见

protected void DetailsView1_DataBound(object sender, EventArgs e)
        {
            DetailsView dv = sender as DetailsView;
            foreach (DetailsViewRow dvr in dv.Rows) {
                ImageButton img = (ImageButton)dvr.FindControl("ImageButton1");
                img.ID = img.ID + dvr.RowIndex;
            }
        }

试试这样的。。。它不会以其他方式找到控件,然后您可以通过它的正常名称+行索引来找到它。如果你的每一行都有一个ImageButton。然后你应该试着用类似的前臂找到它。

您应该在调试中逐步执行该代码,以确保在尝试访问控件时控件本身不是null。通常,您希望在主控件的DataBound事件中执行这些操作。