2017-06-13 8 views
0

Ich möchte Daten aus meiner Datenbank in DataGridView nach dem Speichern neuer Datensatz zeigen. Nachdem ich auf die Schaltfläche geklickt habe, werden die Daten gespeichert, aber nicht in Datagridview angezeigt. Wie kann ich diese Daten anzeigen?Zeige Daten im Datagrid nach dem Hinzufügen eines neuen Datensatzes

private void btn_add_Click(object sender, EventArgs e) 
    { 

     { 

      if (textBox_tarikh.Text == "" || textBox_resit.Text == "" || textBox_bayaran.Text == "") 
      { 
       MessageBox.Show("Please Fill In The Blank"); 

      } 
      else 
      { 

        String bResult = textBox_ic.Text; 
        string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\acap\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30"; // add your conncetion string here 
        SqlConnection connection = new SqlConnection(connectionString); 
        SqlCommand cmd = new SqlCommand("INSERT Pembayaran (Description, Date, No_Resit, Payment, Studentic) VALUES (@Description, @date, @resit, @payment, @val)", connection); 
        cmd.Parameters.AddWithValue("@val", bResult); 
        cmd.Parameters.AddWithValue("@Description", label4.Text); 
        cmd.Parameters.AddWithValue("@date", Convert.ToDateTime(textBox_tarikh.Text)); 
        cmd.Parameters.AddWithValue("@resit", textBox_resit.Text); 
        cmd.Parameters.AddWithValue("@payment", textBox_bayaran.Text); 
        SqlDataAdapter dataadapter = new SqlDataAdapter(cmd); 
        DataSet ds = new DataSet(); 
        connection.Open(); 
        dataadapter.Fill(ds, "pembayaran_table"); 
        connection.Close(); 
        dataGridView3.DataSource = ds; 
        dataGridView3.DataMember = "pembayaran_table"; 

        cmd.Connection.Open(); 
        try 
        { 
         cmd.ExecuteNonQuery(); 
         MessageBox.Show("Data saved Successfully"); 
       } 
        catch (Exception ex) 
        { 
         //throw new Exception("Error " + ex.Message); 
         MessageBox.Show("Receipt No. is already use"); 
        } 

      } 
+0

Wo der Code ist das Raster für die Bindung? mach es als eine Methode und rufe sie nach 'cmd.ExecuteNonQuery();' –

Antwort

0

können Sie versuchen:

private void btn_add_Click(object sender, EventArgs e) 
{ 
    string bResult = textBox_ic.Text; 
    if (textBox_tarikh.Text == "" || textBox_resit.Text == ""||textBox_bayaran.Text == "") 
     { 
      MessageBox.Show("Please Fill In The Blank"); 
     } 
    string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\acap\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30"; 
    SqlConnection connection = new SqlConnection(connectionString); 
    SqlCommand cmd ; 
    try 
    { 
     if(connection.State == ConnectionState.Closed) connection.Open(); 
     cmd = new SqlCommand("INSERT Pembayaran (Description, Date, No_Resit, Payment, Studentic) VALUES (@Description, @date, @resit, @payment, @val)", connection); 
     cmd.Parameters.AddWithValue("@val", bResult); 
     cmd.Parameters.AddWithValue("@Description", label4.Text); 
     cmd.Parameters.AddWithValue("@date", Convert.ToDateTime(textBox_tarikh.Text)); 
     cmd.Parameters.AddWithValue("@resit", textBox_resit.Text); 
     cmd.Parameters.AddWithValue("@payment", textBox_bayaran.Text); 
     cmd.Executenonquery(); 

     SqlDataAdapter da = new SqlDataAdapter("Select * from Pembayaran",connection); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     dataGridView3.DataSource = dt; 
    } 
    catch(Exception ex) 
    { 
    } 
    finally 
    { 
     if(connection.State == ConnectionState.Open) connection.Close(); 
    } 
} 
+0

okay danke @DuchAnhNguyen. Der Code ist Arbeit. –

0

Erstens sehe ich nicht alle Daten in Ihrem Snippet Bindungs ​​Code wie DataGridView.DataSource = " ", DataGridView.DataBind();

Was können Sie versuchen, es zu tun, nachdem Einfügen von Daten, die Verwendung von @@IDENTITY machen die ID abrufen was du eingefügt hast. Verwenden Sie dann die ID, die zum Erfassen des neuen Datensatzes abgerufen wurde.

@@IDENTITY

ich in Ihrem Code-Snippet bemerkt habe, verwendete man die gleiche Abfrage.

SqlDataAdapter dataadapter = new SqlDataAdapter(cmd); 

sollten Sie einen anderen SqlStatement schreiben und nennen es von SqlDataAdapter

Zum Beispiel:

// Assumes that connection is a valid SqlConnection object. 
string queryString = 
    "SELECT CustomerID, CompanyName FROM dbo.Customers"; 
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection); 

DataSet customers = new DataSet(); 
adapter.Fill(customers, "Customers"); 

Populating a DataSet from a DataAdapter

+0

vorher auf, verwende ich den Code wie oben nur ich bearbeitet, aber geben Sie Fehler sagt "Child-Liste für das Feld pembayaran_table kann nicht erstellt werden." –

+0

@ashrafibrahim Überprüfen Sie meine aktualisierte Antwort – Alvin

0

Sie müssen nur Ihre Datagridview die Datenquelle zu aktualisieren, nachdem Datensatz DB einfügen.

+0

können Sie den Code @Vicky S schreiben. –

+0

@DucAnhNguyen Die Antwort funktioniert, können Sie bitte versuchen, dass –

Verwandte Themen