日期:2014-05-18  浏览次数:20497 次

我把lablel ID=“DelPic” visible=false 但是执行就报未将对象引用设置到对象的实例
前台:
<body>
  <form id="form1" runat="server">
  <div style="">
  <div style="margin: auto; padding: auto; text-align: center;">
  <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal">
  <ItemTemplate >
  <div style="float: left; margin-right: 20px;" id="div" >
  <a href="Admin_add.aspx">
  <asp:Label ID="goBack" runat="server" Text="返回"></asp:Label></a><br />
  <br />
  <a onclick="return confirm( '确定删除? ');" href="Admin_delPic.aspx?id=<%#Eval("Img_id") %>"
  id="del">
  <asp:Label ID="DelPic" runat="server" Text="删除"></asp:Label></a><br />
  </div>
  <img src="upload/<%#Eval("Image_Art")%>" alt="" /><br />
  <asp:Label ID="Label1" runat="server" Text='<%#Eval("Image_Art") %>'></asp:Label>
  </ItemTemplate>
  </asp:DataList>
  </div>
  </div>
  </form>
</body>
后台:
  protected void Page_Load(object sender, EventArgs e)
  {

  if (!IsPostBack)
  {
  id = Request.QueryString["id"].ToString(); //获得打开页面所传的值;
  ListBind();
  }
  string users = Session["UserID"].ToString();
  if (users != "admin")
  {
  this.DataList1.FindControl("DelPic").Visible = false;
  }


  }
我这样写不对吗、、??  
刚学 asp.net 网上的有关这个的我也看了。。但是没解决!!求指教

------解决方案--------------------
VS2003 以上版本吧。 可能 你那个控件没有注册上。 你可以手动添加。 也可以把开发环境关了,重开
------解决方案--------------------
把那label删了, 重写个 换个ID。 重新注册一个。。 看好使不
------解决方案--------------------
看看报错信息,确实是没找的label报的错吗?
如果真的是,就试试楼上的方法,先删了,然后编译,然后加一个ID一样的
------解决方案--------------------
我很少这样写,但是我记忆中好像是在OnItemCommand 这个事件中来写。从理论上来说有多少条记录就会有多少个label 而他们的id应该会有变化,你直接用datalist来找,我估计是找不到。
而且这种情况下一般要判断一些是否为null,然后再使用。