删除排在RepeaterControl在ASP.net
-
21-09-2019 - |
题
我写用于从中继器删除该代码,但我有一个问题。 当我运行我的网页广告删除行之一,该行被删除,当我刷新该网页,另外一个行删除了,我不想删除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页上的问题,在其整个生命周期是如何工作的。我建议,而不是创建的网页上以刷新按钮,但这回传并更新转发器被绑定到所需的信息。
不隶属于 StackOverflow