2016-08-07 24 views
0

Ich habe eine Datenbank und Gridview in Asp.net Gefallen Sie diese My Gridview I OnayID Wert 0 auf 1 geändert werden soll, wenn ich Onayla Knopf klicken, und ich schrieb einige Codes aber im Fehler geben, ich weiß nicht Warum kann ich es reparieren? Ich habe einige Wege ausprobiert, aber ich scheiterte.Gridview ausführen Abfrage mit benutzerdefinierter Schaltfläche

<asp:TemplateField> <ItemTemplate> <asp:Button ID="Button1" runat="server" Text="Onayla" CommandName="OnaylaKomutu" /> </ItemTemplate> </asp:TemplateField>

Code-Behind:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 


    if (e.CommandName == "OnaylaKomutu") 
    { 

     string UserID = GridView1.SelectedRow.Cells[7].Text;  
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ElmaCafeDBConnectionString"].ToString()); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("UPDATE elmacustomers SET OnayID='1' WHERE UserID = @" + UserID, con); 
     con.Close(); 
    } 



} 
+0

Was sagt der Fehler? – jonju

+0

Mein Fehler ist Laufzeitfehler: http://i.hizliresim.com/vZdd4v.jpg © konnte nicht debuggen, weil dort nichts geschrieben wurde –

+0

Sind Sie auf Remote-Server? – jonju

Antwort

0

Der Fehler kommt aus der folgenden Zeile.

string UserID = GridView1.SelectedRow.Cells[7].Text; 
//GridView1.SelectedRow == null 

Es ist nicht leicht RowIndex von GridViewCommandEventArgs Objekt zu berechnen. Viel besser ist es CommandArgument='<%#Eval("UserID")%>' zu <asp:Button ... /> hinzuzufügen. Dann haben Sie

string UserID = e.CommandArgument; 

Beim ersten Fehler zu beheben haben Sie ein anderes Thema

SqlCommand cmd = new SqlCommand("UPDATE elmacustomers SET OnayID='1' WHERE UserID = @" + UserID, con); //in effect "...where UserID = @123" 

Valid-Code kann wie folgt aussehen.

SqlCommand cmd = new SqlCommand("UPDATE elmacustomers SET OnayID='1' WHERE UserID = @UserID", con); 
cmd.Parameters.Add("@UserID", SqlDbType.Int).Value = UserID; 
cmd.ExecuteNonQuery(); //You forget to execute 
+0

Ich habe Ihre Korrekturen vorgenommen, aber ich gebe jetzt System.FormatException: Eingabezeichenfolge nicht in einem korrekten format. bei cmd.ExecuteNonQuery(); –

+0

Und ide sagte mir, ich muss e.CommandArgument und ich habe diese Zeichenfolge UserID = (e.CommandArgument) .ToString(); –

+0

Ändern Sie zu 'SqlDbType.Varchar' –

0

Sieht aus wie Sie nicht richtig die benutzerdefinierte Fehlerbehandlung. Und es scheint einen Fehler in Ihrem Code zu geben (schauen wir später auf diesen Fehler). Und um diese gehen weg, fügen Sie die folgende Zeile unter <system.web>-Tag Ihrer web.config

<customErrors mode="Off" defaultRedirect=""/> 

ODER

<customErrors mode="Off"/> 

UPDATE

string UserID = GridView1.SelectedRow.Cells[7].Text;// This is wrong in RowCommand Event 

Statt thie verwenden

int index = Convert.ToInt32(e.CommandArgument); 
string UserID = GridView1.Rows[index].Cells[9].Text; 

Und Fügen Sie Befehlsargument zu Onayla Schaltfläche in der TemplateField hinzu.

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:Button ID="Button1" runat="server" Text="Onayla" CommandName="OnaylaKomutu" CommandArgument='<%#DataBinder.Eval(Container, "RowIndex")%>' /> 
    </ItemTemplate> 
</asp:TemplateField> 

Sieht aus wie es viele Fehler gibt. Hier

SqlCommand cmd = new SqlCommand("UPDATE elmacustomers SET OnayID=1 WHERE UserID = " + UserID, con); //remove @ & single quote(') 
cmd.ExecuteNonQuery(); //forgot to execute the command 
+0

Oh vielen Dank dafür habe ich getan und ich gebe ein paar Fehler wie folgt ein: System.NullReferenceException: Objektreferenz wurde nicht auf eine Instanz eines Objekts gesetzt. Zeichenfolge UserID = GridView1.SelectedRow.Cells [7].Text; –

+0

Sind diese Schaltflächen 'Edit',' Delete' und 'Onayla' in derselben Spalte? – jonju

+0

Nein, Onayla Button in ItemTemplate –

0

Danke für die Antworten. Ich habe meine Frage dank dir behoben. @jonju Hier Antwort: ASP.NET

<asp:Button ID="Button1" runat="server" Text="Onayla" OnClick="OnaylaButton_Click"/> 

C# 
protected void OnaylaButton_Click(object sender, EventArgs e) 

{ 
     int index = GridView1.SelectedRow.DataItemIndex; 
     string UserID = GridView1.Rows[index].Cells[3].Text; 
     Label2.Text = UserID; 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ElmaCafeDBConnectionString"].ToString()); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("UPDATE elmacustomers SET OnayID=1 WHERE UserID =' " + UserID + "'", con); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
     GridView1.DataBind(); 

     Label_Uyarı.Visible = false; 
    }