用了repeater控件,每行有个删除的LinkButton,按这个按钮就要删除改行,怎么样把这行的id传给LinkButton的onclick事件?我现在是用js将值保存在hindfiled中,onclick里读取这个值,但总觉得有安全问题。

解决方案 »

  1.   

    你应该在repeater的OnItemCommand事件处理这个点击动作
      

  2.   

    当然,你也可以委托一个事件去处理,可以参考一下DataGrid的删除
      

  3.   

    我又长一知了,以前我只知道onitembound事件,其他的还没有用过,, 呵呵。。 多谢楼上的了
      

  4.   

    可以把linkbutton换成hyperlink,如下
    if(rpt.Items.Count>0)
    {
    for(int i=0;i<rpt.Items.Count;i++)
    {
    ((HyperLink)rpt.Items[i].FindControl("bsf")).Text=Convert.ToString(ds.Tables["mytable"].Rows[i]["tb1"]).Trim();
    ((HyperLink)rpt.Items[i].FindControl("bsf")).NavigateUrl="/list.aspx?bsf="+Convert.ToString(ds.Tables["mytable"].Rows[i]["tb1"]).Trim();
    }
    这样就没必要写控件的click事件了
      

  5.   

    添加onclick事件
    点击时把这行的id 放在 textbox 中
    然后删除
      

  6.   

    <asp:datalist id="dl_User" runat="server" Width="592px" RepeatColumns="8" RepeatDirection="Horizontal">
    <ItemTemplate>
    <asp:LinkButton ID="lbtUser" Runat="server" Font-Bold="True" OnClick="GetResult" CommandArgument='<%#DataBinder.Eval(Container, "DataItem.UserID")%>'>
    <%#DataBinder.Eval(Container, "DataItem.UserName")%>
    </asp:LinkButton>
    </ItemTemplate>
    </asp:datalist>
    protected void GetResult(object sender, System.EventArgs e)
    {
    string arg = ((LinkButton)sender).CommandArgument;
    for(int i=0;i<dl_User.Items.Count;i++)
    {
    LinkButton lbt = (LinkButton)dl_User.Items[i].FindControl("lbtUser");
    lbt.ForeColor = Color.Black;
    }
    ((LinkButton)sender).ForeColor = Color.Red;
    if (hidGroupID.Value == Common.Group_Applicant)
    {
    BindRequest(arg);
    }
    else if (hidGroupID.Value == Common.Group_Dispatcher)
    {
    BindDispatch(arg);
    }
    else if (hidGroupID.Value == Common.Group_Repairer)
    {
    BindRepair(arg);
    }
    else if (hidGroupID.Value == Common.Group_Inspector)
    {
    BindInspect(arg);
    }
    }
      

  7.   

    在DataBound事件也这个写进去
    this.Submit1.ServerClick += new System.EventHandler(this.Submit1_ServerClick);