<asp:LinkButton id="DelButton" runat="server" visible='<%#CheckUser()%>' ...
....
private bool CheckUser()
{
    if (Session["Admin"]!=null and Session["Admin"]!="xxx")
        return true;
    else
        return false;
}ItemCreated:
if (e.Item.ItemType==ListItemType.Item)
{
    LinkButton lb=(LinkButton)e.Item.FindControls("LinkButton");
    lb.Attributes["onclick"]="return confirm('xxxxxxx');";
}

解决方案 »

  1.   

    1. 根据权限, 可以设置那 itemTemplate 列的 visible 属性
    2. 可以 ((LinkButton)repeater.FindControl("linkbuttonid")).Attributes["onclick"] = "JavaScript:return confirm_del();";
      

  2.   

    if (Session["Admin"]!=null && Session["Admin"]=="New X Admin") //Hoho~~
      

  3.   

    非常感谢acewang(龍芯*Inside!) ( ) 大侠!也对SVG(ben) 的帮助表示感谢!刚才这两个问题都解决了,现在又有新问题了。因为每一个“删除”按钮的提示都不一样,所以我想给LinkButton的确认脚本加一个参数。我想这样:function confirm_del(UserName)
    {
        return confirm('您确信要删除' + UserName + '的留言吗?');
    }我的数据库的表的结构是这样的:Table Message
    (
    ID,
    UserName,
    Message
    )可以在ItemTemplate中用下面的方法得到 UserName 字段的内容。
    <%# DataBinder.Eval(Container.DataItem,"UserName") %>我现在的问题是:如何在Repeater控件的ItemCreated中,把 UserName 做为 onClick 脚本的function confirm_del 一个参数传递进去。if (e.Item.ItemType==ListItemType.Item)
    {
        LinkButton lb=(LinkButton)e.Item.FindControls("LinkButton");
        lb.Attributes["onclick"]="return confirm('xxxxxxx');";
    }就是上面这段代码的'xxxxxxx'不是d固定的,而是根据当前 Item 的内容变化的。请问如何实现?
      

  4.   

    即我想让这句:
    lb.Attributes["onclick"]="return confirm('xxxxxxx');";变成
    lb.Attributes["onclick"]="return confirm_del('张三');";lb.Attributes["onclick"]="return confirm_del('李四);";这“张三”、“李四”就是数据库中表Message的UserName字段。请问大侠如何实现?
      

  5.   

    <asp:LinkButton id="DelButton" runat="server" name='<%# DataBinder.Eval(Container.DataItem,"UserName") %>' ... ((LinkButton)repeater.FindControl("linkbuttonid")).Attributes["onclick"] = "JavaScript:return confirm_del(this);";
     js function:function confirm_del(obj)
    {
      return confirm("***" + obj.name)
    }
      

  6.   

    SVG(ben) ,你好!
    我这贴本来是打算问两个问题的,现在多出来一个。一会我会另开个贴子给分给你。你用的这个办法很巧妙的解决了我的上面的问题。实际上我的问题具有普遍性,我很想知道的是:
    在Repeater控件的ItemCreated事件中,是不是可以得到当前Item的绑定数据?如果可以,应该如何实现?请大侠原谅我的鲁莽和无知。
      

  7.   

    repeater 要绑定 datakeyfield (用数据源的关键字段)
    在itemcreated 里
    可以用 repeater.datakeys[e.item.itemindex] 获得这个 key,
    则可以利用这个关键字在 datasource 那里查询到当前数据行
      

  8.   


    感谢SVG(ben) 辛勤劳动!我终于找到一个办法,比较理想地解决了这个问题。private void InitializeComponent()
    {    
          ....
          this.Rp1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
          ....
    }
    private void Repeater1_ItemDataBound(object source, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
          if (e.Item.ItemType==ListItemType.Item)
          {
              LinkButton lb=(LinkButton)e.Item.FindControl("MyLB");
              lb.Attributes["onClick"]="JavaScript:return confirm_del('" + DataBinder.Eval(e.Item.DataItem, "UserName") +"');return false;";
              lb.Attributes["onClick3"]="JavaScript:return confirm_del('" + ((DataRowView)(e.Item.DataItem))["UserName"] +"');return false;";
          }}
      

  9.   

    在Repeater的ItemDataBound事件中实现的。上面的 onClick 和 onClick3 演示了两种实现的办法。
    实际应用的时候只需要一种就可以了。DataBinder.Eval(e.Item.DataItem, "UserName") 这种方法使用简单。
    ((DataRowView)(e.Item.DataItem))["UserName"] 这种方法执行效率高。
      

  10.   

    SVG(ben) 大侠你好!
    这贴我给你分,表示您的得分贴。另开了一个100分的贴,请您去领。