Home > asp.NET > asp.net :: GridView DELETE ohne Primary Key

asp.net :: GridView DELETE ohne Primary Key

GridViews sind eine schöne Sache. Man kann schnell und einfach Daten auf seiner Form ausgeben, bearbeiten und vor allen Dingen komfortabel löschen.
Aber nur, wenn die Bezugsspalte in der Datenbank als Primary Key hinterlegt ist.

In meinem Fall sollte eine Terminserie, die aus vielen Einzelterminen (jeder Termin hat eine ID -> Primary Key) anhand einer SerienGuid (varchar -> KEIN PK), die diese Termine zu einer Serie zusammenfasst, gelöscht werden.

Hierzu habe ich im GridView folgende Änderungen vornehmen müssen:

DataKeyNames [Tag] entfernen
OnRowCommand=”GridView1_RowCommand” einfügen

Ein neues Template-Field hinzufügen:

1
2
3
4
5
6
7
8
9
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID=”ImageButton1″ runat=”server” ImageUrl=”~/images/icon_delete.gif”
CommandName=”DeleteIt” OnClientClick=return confirm(‘Möchten Sie diesen Eintrag wirklich löschen?);”
CommandArgument=<%# Eval(“SerienGuid”) %>‘ />
</ItemTemplate>
<HeaderStyle BackColor=#EBF1FD” HorizontalAlign=”Center” />
<ItemStyle BackColor=”White” HorizontalAlign=”Center” />
</asp:TemplateField>

Anschliessend im CodeBehind:

1
2
3
4
5
6
7
8
9
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
   if (e.CommandName == “DeleteIt”)
   {
      String sql = “DELETE FROM SerienTabelle”
            +WHERE SerienGuid = ‘” + e.CommandArgument  + “‘”;
      [...]
   }
}
Kategorienasp.NET Tags:
  1. Christian K
    29. Februar 2012, 09:57 | #1

    Danke, das habe ich gesucht, Command verwendet amn ja nicht alle Tage ;-)

  1. Bisher keine Trackbacks

Spam protection by WP Captcha-Free