我写用于从中继器删除该代码,但我有一个问题。 当我运行我的网页广告删除行之一,该行被删除,当我刷新该网页,另外一个行删除了,我不想删除that.in其实我想删除一个行,但删除两排,当我刷新页

protected void SendBoxrep_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    MembershipUser Admin = Membership.GetUser(User.Identity.Name);

    if (e.CommandName == "del")
    {
        Guid g = new Guid(e.CommandArgument.ToString());
        MessageClass.deleteMessage(g);

        SendBoxrep.DataSource = MessageClass.selectMessagesUser(Admin);
        SendBoxrep.DataBind();
    }

}

    public static void deleteMessage(Guid id)
{
    foreach (Message item in MessageClass.LoadAll(id))
    {
        MDB.Messages.DeleteOnSubmit(item);

        MDB.SubmitChanges();
    }
}
有帮助吗?

解决方案

尝试基于ùř删除表中的主键来删除。

假设üř删除表说已MESSAGEID作为主键信息。 现在如果u要删除一个特定的消息然后发送MESSAGEID作为commandArgument和删除。

删除后,当你[R刷新相同的事件发生时,即页面,如果你连续按下一个按钮来删除该消息的事件的 SendBoxrep_ItemCommand 解雇,把它删除记录commandArgument。同样,你按F5刷新页面然后删除以前的事件。所以,你的两个记录被删除。

现在使用的主键的(MESSAGEID)将只删除一条记录,即使你按F5火一样的事件两次。

其他提示

在这样的情况下,我使用的Response.Redirect重新加载页面和回发事件已处理后,摆脱了回发信息已经取得了成功。通过这种方式,回传将仅出现一次并刷新使用浏览器的页面应该不会造成任何问题。而不是调用的Repeater.DataBind的......

Response.Redirect(Request.RawUrl);

您可能不得不做出设计变更到你的页面的其他部分或添加一个参数,以表明您正在重新加载页面的查询字符串,但这是提供这种能力的税收。

评论上面显示你是通过F5刷新您的页面;这是众所周知的原因,因为他们是如何回来后,ASP.NET页上的问题,在其整个生命周期是如何工作的。我建议,而不是创建的网页上以刷新按钮,但这回传并更新转发器被绑定到所需的信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top