---
title: "RowDeleting i Gridview raderar två rader istället för en"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/174544-rowdeleting-i-gridview-raderar-två-rader-istället-för-en"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "haxx"
published: "2008-10-05T17:51:48.000Z"
updated: "2008-10-05T20:50:35.000Z"
replies: 5
views: 449
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/174544-rowdeleting-i-gridview-raderar-två-rader-istället-för-en"
---

# RowDeleting i Gridview raderar två rader istället för en

## #1 — haxx, 2008-10-05T17:51Z

RowDeleting i Gridview raderar två rader istället för en. När jag ska radera en rad så raderas två istället. Ett exempel är att när jag klickar på raden med listId 32 så raderas den raden och den rad med närmast lägsta listId.

Vad beror detta på?

```
protected void Grid_RowDeleting(Object sender, GridViewDeleteEventArgs e)
    {
        string listId = Grid.DataKeys[e.RowIndex].Value.ToString();
        bool success = CatalogAccess.DeleteAdressList(listId);
        statusLabel.Text = success ? "Delete successful" : "Delete failed";
        BindGrid();
    }
```

```
public static bool DeleteAdressList(string listId)
    {
        DbCommand comm = GenericDataAccess.CreateCommand();
        comm.CommandText = "DeleteAdressList";
        DbParameter param = comm.CreateParameter();
        param.ParameterName = "@listId";
        param.Value = listId;
        param.DbType = DbType.Int32;
        comm.Parameters.Add(param);
        int result = -1;
        try
        {
            result = GenericDataAccess.ExecuteNonQuery(comm);
        }
        catch
        {

        }
        return (result != -1);
    }
```

```
public static int ExecuteNonQuery(DbCommand command)
    {
        int affectedRows = -1;
        try
        {
            command.Connection.Open();
            affectedRows = command.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            command.Connection.Close();
        }
        return affectedRows;
    }
```

Permalänk: https://www.webforum.nu/p/174544

## #2 — haxx, 2008-10-05T19:07Z

Så här står det när jag raderar den rad med lägst listId:

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Source Error: 

Line 29:     protected void Grid_RowDeleting(Object sender, GridViewDeleteEventArgs e)
Line 30:     {
Line 31:         string listId = Grid.DataKeys\[e.RowIndex\].Value.ToString();
Line 32:         bool success = CatalogAccess.DeleteAdressLista(listId);
Line 33:         statusLabel.Text = success ? "Delete successful" : "Delete failed";

Permalänk: https://www.webforum.nu/p/2145418

## #3 — erka, 2008-10-05T20:01Z

Har inte kollat in din kod, men jag vet att det finns en bugg i Gridview och RowDeleting, men den uppenbarar sig bara om man använder en bildknapp för att radera raden. Gör du det?

Permalänk: https://www.webforum.nu/p/2145471

## #4 — haxx, 2008-10-05T20:21Z

Ja, faktist så gör jag det. Finns det något sätt att komma runt detta problem?

Permalänk: https://www.webforum.nu/p/2145475

## #5 — haxx, 2008-10-05T20:22Z

Jag har suttit i flera timmar och letat efter felet, tack för att du sa det!

Permalänk: https://www.webforum.nu/p/2145476

## #6 — haxx, 2008-10-05T20:50Z

Kollade upp problemet, och jag har lösningen. Tack än en gång erka för svaret.

T ex så kan man göra så här:

```
<asp:ImageButton runat=server id="ImageButton1" CommandName="Delete"
ImageUrl="..." CommandArgument='<%# DataBinder.Eval(Container,
"RowIndex") %>' OnCommand="ImageButton1_Command">

protected void ImageButton1_Command(object sender, CommandEventArgs e) {
GridView1.DeleteRow(Int32.Parse(e.CommandArgument.ToString() ));
}
```

Permalänk: https://www.webforum.nu/p/2145485

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/174544-rowdeleting-i-gridview-raderar-två-rader-istället-för-en
