2016-06-01 15 views
0

Ich möchte eine Zeile, die ich überprüft habe, aktualisieren und laden Sie die Gridview erneut.Ausgewählte Gridview Zeile nicht aktualisiert mit Checkbox

enter image description here

ich sie aktualisieren einen Knopf und ein Kontrollkästchen mit der Zeile zur Auswahl.

protected void btnProceed_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
     CheckBox chkRow = (row.Cells[0].FindControl("chkRow") as CheckBox); 
     if (chkRow.Checked) 
     { 
      con.Open(); 
      cmd = new SqlCommand(@"UPDATE JobQuotations1 
            SET TransactionStatus = @Done 
            WHERE TransactionID = @Tid 
            AND TransactionNum = @num", con); 

      cmd.Parameters.AddWithValue("@Done", "Done"); 
      cmd.Parameters.AddWithValue("@Tid", GridView1.SelectedRow.Cells[1].ToString()); 
      cmd.Parameters.AddWithValue("@num", GridView1.SelectedRow.Cells[2].ToString()); 

      cmd.ExecuteNonQuery(); 
      con.Close(); 
      LoadDataGrid(); 
     } 
    } 
} 

Wenn ich auf den Knopf geklickt habe, passiert nichts.

+0

Haben Sie Debug-Versuchen Sie es mit? Gibt es eine Anfrage an Ihren Server? –

Antwort

2

Ersetzen Sie diese

GridView1.SelectedRow.Cells[1].ToString() 
GridView1.SelectedRow.Cells[2].ToString() 

mit diesem

GridView1.SelectedRow.Cells[1].Text 
GridView1.SelectedRow.Cells[2].Text 

Sie die Zelle Text der Reihe wollen, während ToString die Art Informationen von Zelltyp zurück.

Auch sollte der richtige Weg, um den Zellenwert der aktuellen Zeile wie diese innerhalb der Schleife zu erhalten, da Sie bereits die aktuelle row

haben
row.Cells[1].Text 
row.Cells[2].Text 
+0

versuchte Ihren Code jetzt bekomme ich diese 'Eine Ausnahme vom Typ 'System.NullReferenceException' aufgetreten in MejShop.dll, wurde aber nicht in Benutzercode behandelt Zusätzliche Informationen: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt. –

+0

Dafür müssen Sie Ihre Grid View Markup posten. Bearbeiten Sie Ihre Frage und setzen Sie Grid View Markup, dann können wir etwas finden –

+0

es ist alles gut. Es funktioniert jetzt. –

0
cmd.Parameters.AddWithValue("@Tid", row.Cells[1].Text); 
cmd.Parameters.AddWithValue("@num", row.Cells[2].Text); 

Code ändern, wenn Sie Parameter hinzufügen . Überprüfen Sie auch die Abfrage, die durch Debugging an den Datenbankserver gesendet wird. Versuchen Sie, die gleiche Abfrage direkt auf dem Datenbankserver auszuführen und festzustellen, ob Zeilen betroffen sind.

0

Verwenden

foreach (DataGridViewRow item in GridView.Rows) 
      {  
      if (Convert.ToBoolean(item.Cells["ColumnCheckBoxName"].Value) == true) 
        { 
        long DocId = (long)item.Cells[0].Value; 
        } 
      } 
Verwandte Themen