2016-05-15 16 views
0

Ich schreibe, um Hilfe beim Löschen von Datenbankdatensätzen mithilfe der Checkbox gridview controls zu erhalten.Datensätze mit Gridview löschen ASP.NET

Ich versuche, die Datensätze aus "ViewData" mit Checkbox und Gridview zu löschen, aber die 'If' Bedingung weiterhin fehlschlägt. Irgendwelche weitere Hilfe, wo ich vielleicht schief gehe, würde sehr geschätzt werden. Vielen Dank für Ihre Zeit und Ihr Feedback.

//Method for Deleting Record 
protected void DeleteRecord(int ID) 
{ 
    SqlConnection con = new SqlConnection(cs); 
    SqlCommand com = new SqlCommand("delete from tbl_Users where [email protected]", con); 
    com.Parameters.AddWithValue("@ID", ID); 
    con.Open(); 
    com.ExecuteNonQuery(); 
    con.Close(); 
} 

protected void btnDeleteRecord_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow grow in ViewDataGrid.Rows) 
    { 
//Searching CheckBox("chkDel") in an individual row of Grid 
CheckBox chkdel = (CheckBox)grow.FindControl("chkDel"); 
//If CheckBox is checked than delete the record with particular empid 
if (chkdel.Checked) 
{ 
    int ID = Convert.ToInt32(grow.Cells[1].Text); 
    DeleteRecord(ID); 
} 
    } 
    //Displaying the Data in GridView 
    showData(); 
} 

Fehler: Eingabezeichenfolge war nicht im richtigen Format in: int ID = Convert.ToInt32 (grow.Cells [1] .Text);

+0

Was auch immer in 'grow.Cells [1]' ist, kann nicht in ein 'int' umgewandelt werden. Was ist in dieser Zelle? – Crowcoder

+0

Was ist grow.Cells [1] .Text? – User2012384

+0

Nach Ihrer Frage hat mir enorm geholfen, ich habe die ID-Zelle nicht in den Tisch gelegt! Gnade :) Vielen Dank! :) – Paris

Antwort

0

In folgenden Zeile

int ID = Convert.ToInt32 (grow.Cells [1] .Text);

Der tatsächliche Wert von grow.Cells [1] .Text enthält möglicherweise alphabetische Zeichen oder die Leerzeichen, so dass Sie diesen Fehler erhalten.

Convert.ToInt32 (stringVal) konvertiert die angegebene Zeichenfolgendarstellung einer Zahl tatsächlich in eine äquivalente 32-Bit-Ganzzahl mit Vorzeichen, aber der Parameter sollte eine Zeichenfolge sein, die nur die Zahl enthält.

0

Mit Ihrer Select-Abfrage in der Zeile Zeichenfolge SelectQuery = "SELECT FROM tbl_Users WHERE ID =" + ID; Ihnen fehlen die Werte, die Sie auswählen.

Sie müssen entweder die spezifischen Spalten auswählen, die eingegeben werden *, um alle Spalten auszuwählen. z.B. Zeichenfolge SelectQuery = "SELECT * FROM tbl_Users WHERE ID =" + ID; oder Zeichenfolge SelectQuery = "SELECT Spalte1, Spalte3 FROM tbl_Users WHERE ID =" + ID;