Announcement

Collapse
No announcement yet.

DataTable mit InsertAt(r,n) füllen

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

  • DataTable mit InsertAt(r,n) füllen

    Hallo bei dot.net,

    Ich würde gerne in eine DataTable Zeilen an einer bestimmten Position einsetzen. dazu habe ich zwei Fragen:

    Mit
    tb.Rows.Find(id);
    suche ich die Zeile, nach der ich eine neue einfügen möchte. Das klappt so auch aber: wo bekomme ich die "Zeilennummer" der gefundenen Row her?

    Dann das InsertAt(r, Zeilennummer).

    DataRow r = xmlTable.NewRow();
    r["type"] = type;
    r["id"] = id.ToString();
    r["content"] = "text1";
    r["content2"] = "text2";
    xmlTable.Rows.InsertAt(r,Zeilennummer);

    Grundsätzlich wird eine Zeile eingesetzt, aber nicht da wo sie hin soll.

    Anscheinend hapert es da. In verschiedenen Fundstellen (Google) wurde das Thema behandelt, allerdings ohne zu helfen. Hat da jemand Erfahrung?

    Klar, das danach ein AcceptChanges() nötig (?) und ggfs. das Grid zu erneuern ist. Aber erstmal die Zeile "reinkriegen".

    Freue mich auf alle Antworten!

    mfg

    Dirk

  • #2
    OK, es gibt zwar Möglichkeiten die Indizes herauszubekommen, ist aber innerhalb der (DataRow)Collection nicht unbedingt die "normale" Vorgehensweise und auch recht komplex.....

    Mein Vorschlag wäre: Erzeuge Dir in Deinem DatenSatz innerhalb der Tabelle eine Spalte mit Deiner ID. D.h. Du hast immer die korrekte ID. Nachteil: Nach einem InsertAt müsstest Du alle nachfolgenden Indizes erneuern.
    2. Mache Dir Deine eigene Suchfunktion, die dann statt einer DataRow den Index zurückgibt. Man kann auch beides kombinieren...
    oder 3. Eine DataView verwenden und die Daten dann über die DataView sortieren. D.h. das Problem umgehen: die Daten speichern, wie sie kommen und dann für die Ausgabe so sortieren, wie ich sie brauche.
    Der Punkt 3 ist/sollte im Grunde der normale Weg sein, den ich auch priorisieren würde

    Comment


    • #3
      Hallo Heron

      werd mir 3.) durch den Kopf gehen lassen. eine ID habe ich schon (wegen Find()), die allerdings nicht dem "Sort" dienen sollte.

      Wenn ich dich recht verstehe, ab der "neuen" Zeile eine Spalte "Sort" mit einem Index füllen. Naja, werds mal probieren.

      Besten Dank.

      mfg

      Dir

      Comment

      Working...
      X