簡體   English   中英

刪除按鈕僅刪除了GridView中的第一行

[英]Delete button only deleted first row in gridview

我在GridView中添加了刪除按鈕。 但是問題在於它總是刪除第一行。

例如,如果我要刪除第二行或第三行,則第一行中的數據將被刪除。 我只希望按鈕刪除它旁邊的行:

public void bindgrid()
{
    SqlConnection conn = new SqlConnection("cnString");
    SqlCommand cmd = new SqlCommand("select Id,Name, from myTable ", conn);
    SqlDataAdapter da = new SqlDataAdapter("", conn);
    da.SelectCommand = new SqlCommand("select Id,Name, from myTable", conn);
    DataSet ds = new DataSet();
    da.Fill(ds, "data");
    gridview1.DataSource = ds.Tables[0].DefaultView;
    gridview1.DataBind();
}


protected void gdview_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    int userid = int.Parse(gridview1.DataKeys[0].Value.ToString());
    SqlConnection conn = new SqlConnection("cnString");
    SqlDataAdapter da = new SqlDataAdapter("", conn);
    conn.Open();
    da.DeleteCommand = new SqlCommand("delete from myTable where Id=" + userid , conn);

    da.DeleteCommand.ExecuteNonQuery();
    conn.Close();
    bindgrid();
}

您應該傳遞當前行索引而不是gridview1.DataKeys[0]

 protected void gdview_RowDeleting(object sender, GridViewDeleteEventArgs e)
   {
    int userid = int.Parse(gridview1.DataKeys[e.RowIndex].Value.ToString());
    SqlConnection conn = new SqlConnection("cnString");
    SqlDataAdapter da = new SqlDataAdapter("", conn);
    conn.Open();
    da.DeleteCommand = new SqlCommand("delete from myTable where Id=" + userid , conn);

    da.DeleteCommand.ExecuteNonQuery();
    conn.Close();
    bindgrid();
   }

問題在下面的行中

int userid = int.Parse(gridview1.DataKeys[0].Value.ToString());

您總是通過使用[0]獲取第一行的用戶ID。

從“ e”獲取適當的值並將其傳遞。

e.RowIndex

像這樣的東西

GridViewRow row = gridview1.Rows[e.RowIndex];
int userid = int.Parse(row[0].Value.ToString());

替換此行

int userid = int.Parse(gridview1.DataKeys[0].Value.ToString());

對此

int userid = int.Parse(gridview1.DataKeys[e.RowIndex].Value.ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM