La suppression de ASP.NET Répétition de l'élément erroné suppression...?

J'ai un répéteur qui lie un ensemble de données. Dans ce répéteur est une colonne avec les différents contrôles de mise à jour, suppression, etc. Ce sont des boutons image qui déclenche un événement onclick comme "DeleteRecord". Tout cela n'est le feu d'une procédure stockée, en passant l'ID de l'enregistrement à supprimer de la CommandArgument de l'objet.

Cela fonctionne à merveille... sauf pour l'un plutôt énorme problème. Une fois que vous supprimez un enregistrement, si vous actualisez la page, l'enregistrement où le premier enregistrement supprimé utilisé pour être supprimées.

Par exemple... si j'ai 4 dossiers

1 Record1 
2 Record2 
3 Record3 
4 Record4 

et j'ai supprimer l'enregistrement 2... le rechargement de La page avec (qui est très bien):

1 Record1 
3 Record3 
4 Record4 

...si je puis cliquer sur "actualiser"...

1 Record1 
4 Record4 

Je suppose que c'est parce que le tort objet supprimé (record3) est maintenant dans la même hiérarchique endroit que l'ancienne objet utilisé pour être et des .net, donc il ne sait pas la différence, l'actualisation de la page et les feux de la onlick événement, en saisissant la commande de l'argument de l'objet nouveau et supprime en fonction de l'ID obtenues à partir de l'commandargument du nouvel objet.

C'est évidemment un énorme problème, si un client n'a cela, il faudrait détruire les données à tort et j'en suis à une perte ici.

Est-il un moyen pour arrêter cela? Je ne suis pas sûr si il ya une meilleure façon de faire les choses ou pas. Si il n'y en a pas, j'ai besoin d'une sorte de façon de faire la page pas pour exécuter l'événement ou de renvoi l'ID de l'objet que est prévu pour la suppression à l'encontre de l'objet lui-même...

Code ci-dessous pour plus de commodité...

MODIFIER Enveloppé d'un LinkButton autour d'elle car j'ai quelques jquery code ici qui s'arrête à la page de l'exécution d'attendre la confirmation de l'utilisateur. En appuyant sur "ok", poursuit l'exécution de page.

<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();
        }
    }

Serait apprécions tous les commentaires que vous gens pouvaient donner.

  • Merci pour le montage, Oded.
  • J'ai essayé d'Adam solution et il fait la même chose. Je tiens à souligner, cependant, que j'ai dû improviser un peu, mais il ne devrait pas faire une différence dans l'exécution du code. Je vais mettre à jour le code ci-dessus pour tenir compte de la nouvelle situation.
InformationsquelleAutor Mark | 2010-09-27