Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Daten aus DataGrid per RestAPI speichern
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4093

beantworten | zitieren | melden

Die Methode EndEdit sollte aufgerufen werden, sobald Änderungen an einer Zelle gemacht wurden und man dann eine andere Zeile selektiert (bzw. fokussiert).
Dann solltest du mal deinen Code genauer debuggen, ob und wann diese Methode aufgerufen wird?

Wenn du wirklich nach jeder Zellenwertänderung die Daten speichern möchtest, dann bräuchtest du wirklich so etwas wie "CellEditEnded" (CellEditEnding wird jedoch aufgerufen, bevor die Daten gespeichert wurden, s.a. WPF DataGrid - Committing changes cell-by-cell).
Dies halte ich aber persönlich generell für nicht so toll.
private Nachricht | Beiträge des Benutzers
Sascha87
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Du hast recht, die Methode wird immer aufgerufen.

Mein RestAPI Link wird nur nicht korrekt gefüllt. Daher gibt es auch keine Einträge in der Datenbank.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Sascha87 am .
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4093

beantworten | zitieren | melden

Kommt die AddUrlSegment-Methode mit null-Werten klar? In der Doku RestSharp: Interface IRestRequest finde ich nichts detailliertes dazu.
private Nachricht | Beiträge des Benutzers
Sascha87
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Leider nein. Mir würde ein Default Value wie "-" reichen.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15976

beantworten | zitieren | melden

Dann darfst eben nich blind die Parameter reinhängen, sondern musst vorher prüfen.
Wenn es null ist, lass es weg.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4093

beantworten | zitieren | melden

Das programmiertechnisch einfachste wäre dann wohl eine Erweiterungsmethode (in einer eigenen statischen Klasse) zu erstellen:


IRestRequest CheckAddUrlSegment(this IRestRequest request, string name, string value)
{
    if (value != null)
        return request.AddUlrSegment(name, value);

    return request;
}
So brauchst du nur beim Aufruf jeweils den Methodennamen zu ändern.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
Sascha87
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Gibt es die Möglichkeit, wenn ich keinen Wert habe, dass dann "-" gesetzt wird?

Auch, wenn es nicht der Ansicht von Abt entspricht, finde ich den Weg ganz gut. So hätte ich keine leeren Felder in der DB und beim auslesen habe ich direkt ein Zeichen in der Liste, das zeigt, dass dort keine Werte vorhanden sind und ergänzt werden müssen.
Denn genau das Zeichen setze ich so oder so als

TargetNullValue=-
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Sascha87 am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15976

beantworten | zitieren | melden

Das hat mit "der Ansicht von Abt" nix zutun; das würde einfach viele Standards "verletzen" und Dir sehr wahrscheinlich in Zukunft sehr viele Probleme machen.
Zitat
Zeichen in der Liste, das zeigt, dass dort keine Werte vorhanden sind und ergänzt werden müssen.
Sowas würde man in der UI mappen, aber niemals über "Datenlogik".
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Sascha87
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Gut, dann anders.

Wenn ich die Methode von Th69 richtig verstehe, wird nur der Wert an die URL gehängt, der auch gefüllt ist, richtig?

Ich bekomme auf der anderen Seite dann Schwierigkeiten. Das Script auf dem Server erwartet genau die URL.
Woher soll das Script denn wissen, wenn die Werte in einer ganz anderen Reihenfolge versendet werden?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15976

beantworten | zitieren | melden

Zitat
Woher soll das Script denn wissen, wenn die Werte in einer ganz anderen Reihenfolge versendet werden?
Null sind prinzipiell valide Werte und in HTTP erlaubt. Die meisten Bibliotheken lassen den Wert einfach beim Versenden Weg oder er ist leer.
Serverseitig wird dann null gemappt, wenn nach dem jeweiligen Key gefragt wird aber kein Wert übertragen wurde.

Die Reihenfolge darf keine Rolle spielen, weil diese bei HTTP-Anfragen generell nicht garantiert sind; weder beim Versenden noch beim Empfangen.
Spielt in Deinem Code die Reihenfolge eine Rolle, dann hast Du generell einen Fehler in der Verarbeitung. Da sind Folgefehler demnach nur eine Frage der Zeit; also machs direkt richtig: und halte Dich einfach an Standards. Dafür sind sie da.
HTTP Parameter haben immer ein Key-Value-Schema, sodass Du das problemlos anhand der Namen verarbeiten kannst und einen grundlegenden Fehler wie eine stupide Reihenfolge erst gar nicht machen musst.

Wenn Du es korrekt implementiert hast, wie es der Standard (in diesem Fall REST) vorsieht, dann kannst Du problemlos null-Werte empfangen.
In einem weiteren Schritt validierst Du Pflicht- und optionale Felder (nach ihren Werten).

Danach schreibst Du die Werte in die Datenbank; inkl. null, wo es erlaubt ist.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers