本帖最后由 hyt48079287 于 2010-06-19 06:04:59 编辑

解决方案 »

  1.   

    (LinkButton)FindControl("btnDelete");
    这样就行!
      

  2.   

    写在Repeater1_ItemDataBound方法里面就可以了
      

  3.   

    要在repeater的ItemDataBound事件里进行查找 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
     {
            //
           LinkButton bb = (LinkButton)e.Item.FindControl("btnDelete");
      }
      

  4.   

    5楼正解
    不在ItemDataBind事件中查找谁知道在哪啊
    数据多的时候一个repeater中不是有很多名为linkbutteon了?
    id也不是一样的,只有在特定的行里才能找到
      

  5.   

     protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            for (int i = 0; i <Repeater1.Items.Count; i++)
            {
              LinkButton bb = (LinkButton)Repeater1.Items[i].FindControl("btnDelete");
              //  LinkButton bb = (LinkButton)e.Item.FindControl("btnDelete"); //下面一句报错,出现未将对象引用设置到对象的实例            bb.Visible = true;
            }
        }这样可以显示那个【删除】按钮,但是另外有问题。
    例如这个帖子回复一共有3个,但是最后一个的回复那里没有显示【删除】。
    打断点看了一下,Repeater1.Items.Count  的数量是1 不是2 
    为什么会少了一个数的?
      

  6.   

    既然使用了Repeater1_ItemDataBound这个事件,干么还要再加一个for啊?ItemDataBound这个事件就是在绑定数据的行时就发生的,protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
     {
            //
           LinkButton bb = (LinkButton)e.Item.FindControl("btnDelete");
           bb.Visible = true;  }给你的这个不就可以了吗
      

  7.   

    你不就是设置Visible嘛,不要到处去追逐在什么地方去写代码:Visible='<%# Page.User.IsInRole("管理员") %>'不用在满篇代码中来回跑腿。
      

  8.   

    实际上这个可以优化一下:
    private bool? _super;protected bool 判断管理员()
    {
        if(!_super.HasValue )
            _super.Value= Page.User.IsInRole("管理员")
        return _super.Value;
    }
    Visible='<%# 判断管理员() %>'不过重点是:不要写很多代码。
      

  9.   

    嗯,  _super.Value= Page.User.IsInRole("管理员")
    可能应该写为  _super= Page.User.IsInRole("管理员")
    才对!少写代码,你的设计可以容易一些,更好维护和扩展一些。代码写的越少,能力越强。
      

  10.   


      bb.Visible = true;未将对象引用设置到对象的实例。   
      

  11.   

     Repeater1_ItemDataBound方法里不用循环,直接查找就行了
    LinkButton bb = (LinkButton)e.Item.FindControl("btnDelete");
    bb.Visible = true;
      

  12.   


    bb.Visible = true;//未将对象引用设置到对象的实例。 
      

  13.   

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
     {
            //
           LinkButton bb = (LinkButton)e.Item.FindControl("btnDelete");
      }
      

  14.   

    bb.Visible = true;
    报错:未将对象引用设置到对象的实例。 
      

  15.   

    你可以试试在Repeater1_ItemDataBound事件里面用
    LinkButton lbtnDel = e.FindControl("btnDelete") as LinkButton
    lbtnDel.Visbile = true;
      

  16.   


    System.Web.UI.WebControls.LinkButton btnDelete= e.Item.FindControl("btnDelete") as System.Web.UI.WebControls.LinkButton ;后台加上这句就OK了