Announcement

Collapse
No announcement yet.

datagridview wird nur bei select aktualisiert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • datagridview wird nur bei select aktualisiert

    Hallo,

    ich habe folgendes Problem.
    Ich habe eine Tabelle, in einer Datenbank, deren Inhalt ich mir in einem Datagrid anzeigen lasse. Ist ja kein Problem...

    [highlight=c#]
    con = new SqlConnection(scon);
    cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "Select * From Tabelle";

    ds = new DataSet();
    da = new SqlDataAdapter(cmd);

    con.Open();
    da.Fill(ds);

    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = ds.Tables[0].TableName;

    con.Close();
    [/highlight]


    So nun habe ich eine Textbox in der man Sql-Cods eingeben kann um dann die Tabelle zu ändern usw.

    So alles gut und schön. Wenn ich ein Select-Befehl eingebe, werden mir bloß die entsprechenden Spalten der Tabelle angezeigt. Wenn ich aber update, insert oder delete benutze bleibt mein DGV leer. Warum nur? Oder bin ich völlig auf dem Holzweg mit meiner Überlegung?

    [highlight=c#]
    string sql = textBox1.Text;
    da = new SqlDataAdapter(sql, con);
    DataTable dt = new DataTable();
    da.Fill(dt);
    dataGridView1.DataSource = dt;
    dataGridView1.Show();
    [/highlight]
    C# bringt mich noch um den Verstand

  • #2
    Wenn ich aber update, insert oder delete benutze bleibt mein DGV leer. Warum nur? Oder bin ich völlig auf dem Holzweg mit meiner Überlegung?
    Was hast du denn erwartet Bei update, insert oder delete gehen Daten zur Datenbank. Zurück kommt nur die Anzahl betroffener Rows.
    Ein anzeigbares Resultset bekommst du nur wenn eine Tabelle zurückgeliefert wird. Also wenn du ein Select absetzt oder ein Function, Procedure in der DB aufrufst die ein Resultset erstellt.

    Wieso benutzt du eine Dataset wenn da immer nur eine Tabelle drinsteckt? Dann kannst du auch gleich nur mit einer Datatable arbeiten.

    Comment


    • #3
      Das heißt ich schmeiß meiner abfrage einfach noch ein Select * hinterher...?
      Dann zeigt er mir ja alles an.
      Das hatte ich mir schon überlegt aber fand das irgendwie doof...
      Gibs denn keine andere Möglichkeit das zu aktualiesieren ?

      Originally posted by Ralf Jansen View Post
      Wieso benutzt du eine Dataset wenn da immer nur eine Tabelle drinsteckt? Dann kannst du auch gleich nur mit einer Datatable arbeiten.
      Stimmt da hast du recht war mir gar nicht so aufgefallen
      C# bringt mich noch um den Verstand

      Comment


      • #4
        Das heißt ich schmeiß meiner abfrage einfach noch ein Select * hinterher...?
        Du hast immer noch nicht erklärt was du erwartet hattest bzw. was du sehen willst. So kann ich nur sagen das ein select nach einen delete (auf die selben Daten) nichts bringt.

        Comment


        • #5
          Ich zeig ja in dem DGV die komplette Tabelle an.
          So wenn ich jetz ein Delete mache fehlt ja in der Tabelle eine Zeile.(oder mehrere)

          Nur wird ja das DGV nicht geladen sondern zeigt nichts mehr an so wie der Code jetzt ist. (zweiter code) Einfach nur der graue Kasten.
          Wenn ich allerding mit dem ersten Button die Tabelle komplett neu reinlade wurde das delete aber ausgeführt. (erster code)

          So nun will ich aber eigendlich nicht die komplette Tabelle nochmal mit einem Select * rein laden wenn ein delete, update oder insert gemacht wurde sondern wüsste gern ob es da eine andere Möglichkeit gibt.

          Edit: Was ich sehen will ist die geänderte Tabelle.
          C# bringt mich noch um den Verstand

          Comment


          • #6
            Wenn du selbst per SQL Befehl den Inhalt der Tabelle änderst bist du auch selbst dafür verantwortlich die entsprechende Datatable zu synchronisieren. Wieso änderst du nicht einfach direkt in der Datatable? Und läßt ADO.Net das für dich dann in der DB updaten(Das mach z.B. auch der SqlDataAdapter) ?

            Wenn du auch Änderungen anderer User sehen willst bleibt dir allerdings nicht viel anderes (einfaches) übrig als mit explizitem Select die Daten neu zu holen.
            Zuletzt editiert von Ralf Jansen; 11.08.2010, 12:54. Reason: Link korrigiert

            Comment


            • #7
              Ich wollte es fürs erste eigendlich über SQL Befehl laufen lassen. Auf was ich später noch lust hab ist immer so eine Sache

              Ok und wie synchronisier ich die Datatable?
              Wenn ich danach suche finde ich irgnedwie nichts brauchbares oder ich kann es nich sagen ob es bruachbar ist, da es in VB ist.

              Ich bin der einzige Nutzer. Ist nur zum Testen angelegt.
              C# bringt mich noch um den Verstand

              Comment


              • #8
                Ok und wie synchronisier ich die Datatable?
                Wenn du selber Insert, Update, Delete in der DB ausführst? Datatable wegwerfen und neu aus der Datenbank holen etwa wie in deinem gezeigten Code.


                Edit: Der Link zum SqlDataAdapter war falsch. Hier nochmal korrigiert

                Comment


                • #9
                  Ah ok dann werd ich das wohl so machen

                  Danke
                  C# bringt mich noch um den Verstand

                  Comment

                  Working...
                  X