我有结合的一组数据的中继器。在该中继器与用于更新各种控制,删除的列,等等,这些都是它触发一个onclick事件,如“DeleteRecord”图像按钮。这一切确实是火一个存储过程,传递记录的ID从对象的CommandArgument删除。从ASP.NET直放站项目删除 - 删除错误...?
这个奇妙的作品...除了一个相当严重的问题。一旦删除记录,如果刷新页面,则第一个删除记录过去的记录被删除。
比如......如果我有4条
1 Record1 2 Record2 3 Record3 4 Record4
,我删除记录2 ...页面将重新加载与(这是罚款):如果
1 Record1 3 Record3 4 Record4
...然后我点击刷新...
1 Record1 4 Record4
我认为这是因为错误删除的对象(record3)现在与第th e旧对象曾经是和.net因此不知道其差异,页面刷新并触发onlick事件,抓取新对象的命令参数并根据从新对象的命令参数获得的ID删除。
这显然是一个巨大的问题,如果客户这样做,它会错误地摧毁数据,我在这里输了。
有什么办法可以阻止这种情况发生?我不确定是否有更好的方法去做或不做。如果没有,我需要某种方式告诉的页面不执行事件或交叉引用旨在针对对象本身删除对象的ID ...
下面的代码为了方便...
编辑在它周围包装了一个LinkButton,因为我在这里也有一些jQuery代码,它会停止页面执行以等待用户确认。按“ok”继续页面执行。
<asp:LinkButton ID="oDeleteLink" CssClass="oDeleteIcon" CommandName="Delete" CommandArgument='<%# Eval("iAccountID") %>' runat="server">
<asp:ImageButton ImageUrl="/files/system/icons/trash-steel-16.png" ToolTip="Delete This Account" AlternateText="Delete" ID="oDeleteIcon" runat="server" />
</asp:LinkButton>
protected void oAccounts_ItemCommand(Object Sender, RepeaterCommandEventArgs e) {
if (e.CommandName == "Delete") {
int ID = e.CommandArgument.ToString().Numeric();
db.SPs.SpDeleteAccount(ID).Execute();
UI.Confirm(uiBroadcast, "Account has been deleted", "300px");
BindAccounts();
}
}
希望你们能给予的任何反馈。
感谢编辑,奥德。 – Mark 2010-09-27 20:31:45
我试过亚当的解决方案,它做同样的事情。然而,我应该指出,我不得不即兴创作,但它不应该在代码的执行上有所作为。我将更新上面的代码以反映新情况。 – Mark 2010-09-27 20:56:03