2016-08-23 2 views
0
protected void Page_Load(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    string VisitorManagementConnectionString = ConfigurationManager.ConnectionStrings["VisitorManagementConnectionString"].ConnectionString; 
    string strQuery = "select Id, ItemName, FoundAt, TimeIn, ImageName from LostFound order by ID"; 
    SqlCommand cmd = new SqlCommand(strQuery); 
    SqlConnection con = new SqlConnection(VisitorManagementConnectionString); 
    SqlDataAdapter sda = new SqlDataAdapter(); 
    cmd.CommandType = CommandType.Text; 
    cmd.Connection = con; 
    ViewState["dt"] = dt; 
    BindGrid(); 
    try 
    { 
     con.Open(); 
     sda.SelectCommand = cmd; 
     sda.Fill(dt); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 
    catch (Exception ex) 
    { 
     Response.Write(ex.Message); 
    } 
    finally 
    { 
     con.Close(); 
     sda.Dispose(); 
     con.Dispose(); 
     dt.Dispose(); 

    } 
} 
protected void BindGrid() 
{ 
    GridView1.DataSource = ViewState["dt"] as DataTable; 
    GridView1.DataBind(); 
} 
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 

} 
protected void BtnLose_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("SecurityLost.aspx"); 
} 

protected void OnRowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     string ID = e.Row.Cells[0].Text; 
     foreach (Button button in e.Row.Cells[5].Controls.OfType<Button>()) 
     { 
      if (button.CommandName == "Delete") 
      { 
       button.Attributes["onclick"] = "if(!confirm('Do you want to delete " + ID + "?')){ return false; };"; 
      } 
     } 
    } 
} 

protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 
    int ID = Convert.ToInt32(e.RowIndex); 
    DataTable dt = ViewState["dt"] as DataTable; 
    dt.Rows[ID].Delete(); 
    string VisitorManagementConnectionString = ConfigurationManager.ConnectionStrings["VisitorManagementConnectionString"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(VisitorManagementConnectionString)) 
    { 
     using (SqlCommand cmd = new SqlCommand("DELETE FROM LostFound WHERE ID = @ID")) 
     { 
      cmd.Parameters.AddWithValue("@ID", ID); 
      cmd.Connection = con; 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 
    } 
    BindGrid(); 
} 

, когда я нажимаю кнопку строку можно удалить удалить, но когда я перезагрузить страницы строку я удалил еще обратиться назад и моя база данных также не будет удалены.GridView не может быть удалить значение ASP.NET

Может ли кто-нибудь вести меня, где я иду не так?

  <asp:GridView ID="GridView1" runat="server" OnRowDataBound = "OnRowDataBound" AutoGenerateColumns = "false" OnRowDeleting="OnRowDeleting" Font-Names = "Arial" Caption = "Lose & Found" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 
      <Columns> 
       <asp:BoundField DataField = "ID" HeaderText = "ID" /> 
       <asp:BoundField DataField = "ItemName" HeaderText = "Item Name" /> 
       <asp:BoundField DataField = "FoundAt" HeaderText = "Place" /> 
       <asp:BoundField DataField = "TimeIn" HeaderText = "Time Found" /> 
       <asp:ImageField DataImageUrlField = "ID" DataImageUrlFormatString = "Image.aspx?ImageID={0}" ControlStyle-Width = "100" ControlStyle-Height = "100" HeaderText = "Preview Image"/> 
       <asp:CommandField ShowDeleteButton="True" ButtonType="Button" /> 
      </Columns> 
     </asp:GridView> 

Это мой HTML-файл.

+0

Место точка останова на OnRowDeleting и шаг через код. Удаляет ли точка разрыва? Удаляется ли элемент из таблицы потерянных и найденных в SQL? –

+0

@DenisСообщает идентификатор значения 0, а delete from имеет значение null –

+0

Aaaah, так что проблема не в удалении части, проблема в том, что вы не извлекаете правильный идентификатор для удаления? –

ответ

0

Так из комментариев мы установили, что проблема заключается в том, что ваш ID всегда 0.To убедитесь, что ID проступает правильно вам нужно сделать два изменения:

1.Change Page_Load() событий как это:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     //Cut and paste the code to bind to the GridView here 
    } 
} 

2.Add этот код на RowDeleting события:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 
    int id = Int32.Parse(GridView1.Rows[e.RowIndex].Cells[0].Text); 
} 
+0

Большое спасибо за работу. –

Смежные вопросы