页面中有个repeater控件。为repeater控件每条记录添加一个linkbutton。当点击每个linkbutton时弹出确认框。询问是否确定删除。点击是后触发删除事件。把对应点击按纽的记录删除。
现在我linkbutton的click事件里写了如下代码
protected void EditLink_Click(object sender, EventArgs e)
        {            foreach (RepeaterItem item in Comments.Controls)
            {
             
                    LinkButton EditLink =item.FindControl("EditLink") as LinkButton;
                    SqlConnection con = new SqlConnection(SiteSqlServer);
                    con.Open();
                    SqlCommand cmd = new SqlCommand("custom_DeleteLeave", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@PostID", SqlDbType.Int).Value = EditLink.CommandArgument.ToString();
                    cmd.ExecuteNonQuery();
                    con.Close();
               
            }
        }
我现在取到linkbutton是所有数据的后的LINKBUTTON都选出来,这样的话,就会把所显示的数据都给删除了。怎么写才能只删除你点击的那行数据呢
我想关键是选取LINKBUTTON的问题,请问如何解决这个问题呢?

解决方案 »

  1.   

    在当前行绑定数据列的ID,删除时,ID传值,根据ID删就OK了。
      

  2.   

    前台 ::<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Reperter_ItemCommand"> <asp:Button ID="Button3" runat="server" Text="Button" CommandName="Select" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"CoID")%>' />后台::protected void Reperter_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {
                Response.Write(e.CommandArgument.ToString());
                //e.CommandArgument.ToString()就是这一行的主键值,下面接着操作该主键值就好了
            }
        }
      

  3.   

    <asp:Repeater ID="Repeater1" runat="server">        
            <ItemTemplate>        
            <asp:LinkButton ID="abc" CommandArgument="你的参数ID" CommandName="命令名称" runat="server">dodo</asp:LinkButton>
            </ItemTemplate>
            </asp:Repeater> 然后在repeater的ItemCommand里面写:  protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName = "命令名称")
            {
                delit(e.CommandArgument.ToString()); //你删除记录的函数
                bindit();  //重新绑定一下repeater            
            }
        }
      

  4.   

    不要在 button_click 事件里写~!! 那里怎么得到这个ID我也不会,或许就得不到吧
      

  5.   

    我写的
    CommandArgument='<%#DataBinder.Eval(Container.DataItem,"CoID")%>' 中的  CoID是主键名,换成你绑定的表的主键就好了
      

  6.   

    谢谢各位了。
    真的不能在button_click 事件里写???