2016-12-11 2 views
1

Ich bin dabei, eine asp.net-Webanwendung in C# mit Visual Studio zu erstellen. Eine meiner Seiten muss Informationen aus einer Tabelle in meiner Datenbank anzeigen und die Möglichkeit bieten, einen der Einträge zu löschen. Als ich hier eine andere Frage stellte, habe ich dies angesprochen und mir einen guten Artikel gegeben, der zeigt, wie man Datenbanktabelleneinträge löscht.Verwenden von gridview zum Löschen des Datenbankeintrags

Ich folge diesem Artikel so genau wie möglich, um die Ergebnisse der Autoren zu reproduzieren, aber ich bekomme gemischte Ergebnisse und ich frage mich, ob jemand darauf hinweisen könnte, wo ich falsch liege. Ich habe auch verschiedene andere Möglichkeiten versucht, dies zu tun, aber immer wieder zu Fehlern. Ich habe Links zu dem Artikel, den ich benutze, zur Orientierung gegeben, wie meine Anwendung im Vergleich zum Artikel aussieht, und einen Screenshot des Fehlers, den ich erhalte, wenn ich auf eine der Lösch-Schaltflächen klicke. Auch mein Code, offensichtlich :). Danke im Voraus.

Link to the article I am following

How my gridview looks when I run my application

Error when clicking any of the delete button links

namespace Coursework 
{ 
    public partial class View_remove_children : System.Web.UI.Page 
    { 
     private String strConnString = ConfigurationManager.ConnectionStrings["newregDBConnectionString"].ConnectionString; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       BindData(); 
      } 
     } 

     public void BindData() 
     { 
      string strQuery = "select firstname, dob, childID" + 
           " from children"; 
      SqlCommand cmd = new SqlCommand(strQuery); 
      GridView1.DataSource = GetData(cmd); 
      GridView1.DataBind(); 
     } 

     public DataTable GetData(SqlCommand cmd) 
     { 
      DataTable dt = new DataTable(); 
      SqlConnection con = new SqlConnection(strConnString); 
      SqlDataAdapter sda = new SqlDataAdapter(); 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = con; 
      con.Open(); 
      sda.SelectCommand = cmd; 
      sda.Fill(dt); 
      return dt; 
     } 
     protected void OnPaging(object sender, GridViewPageEventArgs e) 
     { 
      BindData(); 
      GridView1.PageIndex = e.NewPageIndex; 
      GridView1.DataBind(); 
     } 
     protected void DeleteCustomer(object sender, EventArgs e) 
     { 
      LinkButton lnkRemove = (LinkButton)sender; 
      SqlConnection con = new SqlConnection(strConnString); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "delete from children where " + 
      "[email protected];" + 
      "select firstname, dob, childID from children"; 
      cmd.Parameters.Add("@childID", SqlDbType.VarChar).Value = lnkRemove.CommandArgument; 
      GridView1.DataSource = GetData(cmd); 
      GridView1.DataBind(); 
     } 
     protected void UpdateCustomer(object sender, GridViewUpdateEventArgs e) 
     { 
      string firstname = ((Label)GridView1.Rows[e.RowIndex].FindControl("firstnameLbl")).Text; 
      string dob = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("dobLbl")).Text; 
      string childID = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("childIDlbl")).Text; 
      SqlConnection con = new SqlConnection(strConnString); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "update children set [email protected],[email protected] " + 
      "where [email protected];" + 
      "select firstname, dob, childID from children"; 
      cmd.Parameters.Add("@firstname", SqlDbType.VarChar).Value = firstname; 
      cmd.Parameters.Add("@dob", SqlDbType.VarChar).Value = dob; 
      cmd.Parameters.Add("@childID", SqlDbType.VarChar).Value = childID; 
      GridView1.EditIndex = -1; 
      GridView1.DataSource = GetData(cmd); 
      GridView1.DataBind(); 
     } 

     protected void GridView1_SelectedIndexChanged1(object sender, EventArgs e) 
     { 

     } 
    } 
} 

Quellcode:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master"  AutoEventWireup="true" CodeBehind="View_remove_children.aspx.cs" Inherits="Coursework.View_remove_children" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
<p> 
    <br /> 
</p> 
<p> 
    <asp:GridView ID="GridView1" runat="server" OnSelectedIndexChanged="GridView1_SelectedIndexChanged1" Width="255px"> 
     <Columns> 
      <asp:ButtonField CommandName="Delete" Text="Delete" /> 
     </Columns> 
    </asp:GridView> 
</p> 
<p> 
</p> 

Antwort

0

Der wahrscheinlichste Grund, warum Sie diese Fehlermeldung erhalten, ist, weil auf Ihrer GridView1 ein Ereignis ist, das nicht erstellt wird. Wenn Sie den Code kopiert und eingefügt haben, wechseln Sie zu Ihrer GridView1 und löschen Sie das Ereignis. Es sollte wie GridView1_RowDeleting aussehen. Entfernen Sie das und Ihr Problem wird gelöst. Dies sollte in der Quellansicht, nicht hinter dem Code gefunden werden.

+0

Hallo, habe ich meine Quelle überprüft, aber es gibt keinen Code dieser Beschreibung zu löschen. Ich habe den Quellcode in meine ursprüngliche Frage eingefügt, um Sie zu zeigen. Danke für die Hilfe! – ACostea

+0

In Ihrem Visual Studio, gehen Sie zum Quellcode, geben Sie das Schlüsselwort "RowDeleting" ein, um zu sehen, ob so etwas hervorgehoben wird. – Auguste

+0

Suche nach RowDeleting gibt nichts in meinem Quellcode zurück. Ich habe meinen Quellcode in meiner ursprünglichen Frage zur Verfügung gestellt und Sie können sehen, dass es nichts in Bezug auf RowDeleting gibt. Ich bin so verwirrt, dass der Fehler darauf zurückzuführen ist, dass ein RowDeleting-Ereignis nicht behandelt wird, wenn in meiner Quelle eindeutig nichts zu dieser Frage steht. Gibt es anderswo den RowDeleting-Code? – ACostea

Verwandte Themen