Laden...
Avatar #kSCfyuTL1TM0cpx0ApeH.jpg
echdeneth myCSharp.de - Member
Anwendungsentwickler Sachsen, Herrnhut/Zittau Dabei seit 05.06.2019 161 Beiträge

Forenbeiträge von echdeneth Ingesamt 161 Beiträge

05.12.2023 - 13:42 Uhr

In fraglichem "Projekt Heartbeat" soll das Starten, den laufenden Betrieb (aller x Minuten), Events/Fehler und das Beenden einer App (einer von vielen und auf verschiedenen Clients) in einer DB (momentan MariaDB) geloggt werden.

Potentiell läuft eine App noch auf .NET Framework, andere auf .NET6/7.

Wie würdet ihr das realisieren? Konzeptionell?

Meine Ansätze:

- Eine DLL welche in die App eingebunden wird. Nachteil: Verschiedene .NET Umgebungen und das Beenden zu loggen ist tricky
- Eine Konsolen-App welche die eig. App startet. Nachteil Events und Fehler können nicht durch die Konsolen-App geloggt werden
- Stored Procedures welche die Logik beinhalten Nachteil: Meine SQL Kenntnisse

Danke im Vorraus

PS: Falls ihr fragt "Warum machst du sowas überhaupt - so ein Unsinn - lass das sein!" Der Chef will sowas, der Chef kriegt sowas!

31.08.2023 - 10:50 Uhr

Habe es leider nicht geschafft zu erläutern was ich benötige.

Zu "Claims" und "Claim Based Authorization" leider kein Tutorial gefunden wo das verständlich erklärt wird. 
In allen Fällen wird ein (gefühlt) mehrjähriges .NET Studium und Erfahrung vorrausgesetzt. Wissen für bereits Wissende, nicht Wissensuchende.
Ich habe nicht den geringsten Schimmer wie ich dies verwende. Ohne dies ist das Thema bestenfalls abstrakt/theoretisch.

Also: Nutzername+PW → Claimdingens...

Zudem hängt dies mit ASP.NET zusammen welches ich nicht verwende.

UserRoles sind bei uns eine Sammlung von Daten die Nutzerspezifisch sind z.B.: FTP Zugänge/PW, Adresse, E-Mail-Zeugs, Lieferantenbesonderheiten usw. welche bei passenden Passwort/Username abgefragt werden können. Keine "UserRoles" um Claim Zusammenhang.

30.08.2023 - 15:27 Uhr

Demnach Normalisiert und ID (und Namen) abfragen und ne Runde switchcasen...

Claim Based Authorization und co - sagt mir gar nichts...

Ja, die UserRoles zielen darauf ab ein Login und daraufhin die UserRoles abzufragen (ist n JSON-Array) 
Ob da mehr an Sicherheit reinkommt ist Chefsache...

30.08.2023 - 14:58 Uhr

Ja, ich habe mich "etwas" holprig ausgedrückt.

In meinem Projekt brauche ich mehrere Modi (Pro UserRole) welche in einer Tabelle gespeichert werden (ab als Enum/Set oder 3. Normalform)
Diese müssen aber auch abgefragt werden. Die Daten werden also in der Klasse UserRole gespeichert und müssen später abgefragt werden.

Als enum wären das:

enum ProgramStatusBehavior {Automatik, Manuell, Beides} 
enum ErstellungsModi {Sendungserstellung, Ladelistenerstellung}

Recht einfach.

Man kann dann entweder den String des Enum/Set nehmen oder die ID (der Normalisierung) und für ein SwitchCase, If, whatever...
Es geht mir nicht darum wir ich ein SwitchCase bastel, eine Verzweigung im Code muss halt eindeutig die Modi abhandeln.

30.08.2023 - 13:37 Uhr

Moin,

entschuldigt meine evtl. etwas schwammig formulierten Titel.

In MySQL ist es in einer Tabelle erforderlich das mehrere fixe Werte eingetragen werden können.
z. B. Status {StatusFoo, StatusBar} und Bliblablubb {BlaFoo, BlaBar, Blablubb}

Diese werden in C# abgefragt und sollen ausgewertet werden.
Welche Form wäre dem CleanCode gerecht?

switch(status){}
enum Status {StatusFoo, StatusBar} 
Wie erreriche ich das save die Status zugeordnet und abgefragt werden können?
Per ID und 3. Normalform? 

Danke für Hinweise oder Ideen

Falls ich mich undeutlich ausgedrückt habe, bitte Nachfragen!

21.04.2023 - 12:17 Uhr

Ich konnte den Fehler denke ich reduzieren.

Frage: Was ist der Unterschied zwischen den beiden Codes?

BEGIN
    DECLARE i INT DEFAULT 0;
    WHILE i < 2 DO
        SELECT COUNT(`ID `) FROM `Auftragsliste` WHERE `Sendungsnummer` = "0104000300001009";
        SET i = i + 1;
    END WHILE;
END

Ergebnis: 1

BEGIN
    DECLARE i INT DEFAULT 0;
    DECLARE sendungsnummer VARCHAR(60);
    WHILE i < 2 DO
        SET sendungsnummer = "0104000300001009";
        SELECT COUNT(` ID `) FROM `Auftragsliste` WHERE `Sendungsnummer` = "0104000300001009";
        SET i = i + 1;
    END WHILE;
END

Ergebnis: 17

21.04.2023 - 11:20 Uhr

Verwendetes Datenbanksystem: MySQL

Ich kann den Fehler einfach nicht finden.
Obwohl alle Einzel-Tests mit UPDATE Auftragsliste ... immer nur einen Eintrag ändern wenn ich die Sendungsnummer direkt angebe.

JSON ist "{"Spedition": 1,"Sendungsnummern":["010400030000123", "010400030000456"]}";

BEGIN
    DECLARE spedition INT;
    DECLARE sendungsnummern_json JSON;
    DECLARE sendungsnummern_count INT;
    DECLARE sendungsnummer VARCHAR(60);
    DECLARE i INT DEFAULT 0;
    DECLARE id INT;
    DECLARE new_id INT;
    DECLARE num INT;
    DECLARE bn VARCHAR(10);    
    DECLARE mydate DATE;
    DECLARE bord TEXT;
   
    DECLARE v_bord_content TEXT;
    DECLARE v_first_line_end INT;
    DECLARE v_second_line_start INT;
    DECLARE v_position_to_replace1 INT;
    DECLARE v_position_to_replace2 INT;
 
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        SHOW ERRORS;
        SELECT sendungsnummer AS Sendungsnummer;
        SELECT spedition AS Spedition;
        SELECT new_id AS LastInsertID;
        SELECT sendungsnummern_count;
        SELECT sendungsnummern_json;
        ROLLBACK;
    END;
   
    SET mydate = DATE(NOW());
   
    SET spedition = json_extract(json_param, '$.Spedition');
    SET sendungsnummern_json = json_extract(json_param, '$.Sendungsnummern');
    SET sendungsnummern_count = json_length(sendungsnummern_json);

        SELECT sendungsnummern_count;
        SELECT sendungsnummern_json;

    SELECT MAX(Borderonummer) INTO bn FROM Ladeliste;
    SET num = CAST(SUBSTRING(bn, 7) AS INT) + 1;
    SET bn = CONCAT('MEGA23', LPAD(num, 4, '0'));


    START TRANSACTION;


    INSERT INTO Ladeliste (`Borderonummer`, `Ladedatum`, `Sped`) VALUES (bn, mydate, spedition);
    SELECT LAST_INSERT_ID() INTO new_id;


    WHILE i < sendungsnummern_count DO
        SET sendungsnummer = json_extract(sendungsnummern_json, CONCAT('$[', i, ']'));
       
        SELECT sendungsnummer;

        UPDATE Auftragsliste 
        SET LadelisteID = new_id 
        WHERE Sendungsnummer = sendungsnummer;

        SET i = i + 1;
    END WHILE;
    COMMIT;
END
31.03.2023 - 08:08 Uhr

Moin, nachfolgende

ListBox

soll auch bei wiederholtem Klick auf dasselbe Item die Daten an

SelectedVerpackungPreset

übergeben.

Welches Control würdet ihr empfehlen?


<ListBox
    Width="800"
    HorizontalAlignment="Center"
    FontSize="30"
    ItemsSource="{Binding Verpackungen, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
    SelectedItem="{Binding SelectedVerpackungPreset}"
    SelectedValuePath="Verpackung">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding Verpackung}" Style="{StaticResource MaterialDesignLabel}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
<ListBox
    Width="800"
    HorizontalAlignment="Center"
    FontSize="30"
    ItemsSource="{Binding Verpackungen, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
    SelectedItem="{Binding SelectedVerpackungPreset}"
    SelectedValuePath="Verpackung">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding Verpackung}" Style="{StaticResource MaterialDesignLabel}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


Die betreffende Eigenschaft:


        public VerpackungPresetClass? SelectedVerpackungPreset
        {
            get => selectedVerpackungPreset; set
            {
                selectedVerpackungPreset = value;

                if (string.IsNullOrEmpty(selectedVerpackungPreset.Verpackung)) return;

                VerpackungVisibility = Visibility.Collapsed;
                NewItem = selectedVerpackungPreset;
                NotifyPropertyChanged();
            }
        }

Danke im Vorraus

03.11.2022 - 12:33 Uhr

Moin,

ich wusste nicht genau wie ich den Thread betiteln soll, also schlagt mich bitte nicht.
Und in der Annahme dass ich hier richtig bin.

Ich habe:
DatenQuelle(marieDB) => List<Klasse> list

davon sollen die Daten anhand einer Variable darin gesplittet werden in 3 Dropdowns(Dc) (geht das mit "list", brauche ich für jedes Dc ne Liste?)
oder:
List<Klasse> list (if(param...))
=>List<Klasse> list1 => Dropdown1,
=>List<Klasse> list2 => Dropdown2,
...
Die Auswahl des Dc soll jeweils in einem ItemsControl(Ic) dargestellt werden...
also, benötigte ich nach meinem gängigen Pattern jeweils weitere Listen

Die Elemente in den Ic's können gelöscht werden

Kann ich all dies mit der Hauptliste syncronisieren?
Die Auswertung wollte ich dann mit der Haptliste machen und nicht mit den anderen...

hat jemand ne IDee, hab ich das Anliegen ungenügend dargestellt?

08.12.2021 - 10:52 Uhr

Von welcher UI Technologie sprichst Du denn? WinForms? WPF? Blazor? Xamarin?

Sorry, WPF/MVVM

08.12.2021 - 07:49 Uhr

Moin,

in der Annahme ich bin hier im richtigen Bereich - ich möchte CSV Einlesen deren Spaltenumfang und Datentyp nicht feststehen.
Bei der Verwendung von DataTable bin ich auf das Problem gestoßen dass manche Spalten nicht richtig Dargestellt wurden und es andere Probleme gab:

Überzählige Spalten - (evtl.) wohl eher ein Problem beim Einlese-Algi
Format-Exceptions bei manchen Spalten
...

EIne ObservableCollection wäre hier eine gute Option aber ich weiss nicht wie ich die für die Header des DataGrid benötigten Klassen dynamisch anhand der Spalten der CSV erzeugen kann.

Für Tipps und DesignPattern wäre ich dankbar.

21.09.2021 - 07:55 Uhr

Moin,

Ich möchte ein Code-Snippet-Manager(C#, Php, XAML, SQL, etc...) in WPF schreiben und bin auf ein kleines Problem gestoßen.
Für das Syntax-Highlightning benötige ich eine Richtextbox. Nun bringt es nichts den Aufbau der Rtb in XAML zu schreiben, diese muss leer sein und mit beliebigen Content gefüllt werden.

Nun kann ich ja einer Rtb keinen "Content" oder "Text" zuweisen ähnlich einer Textbox oder Contentcontrol. Git es einn DesignPattern für den "Content" einer Rtb?
Besser Codebbehind als MVVM? EIn Fingerzeig in die richtige Richtung würde schon genügen.

Ich habe mir Lösungen durch Google angesehen kann diesen jedoch wenig bis nicht sentnehmen.

Danke

Marko Rothe

24.06.2021 - 14:10 Uhr

Ich gelobe Besserung, mea culpa...🙂

24.06.2021 - 11:16 Uhr

Wieso nicht einfach
>
?

Würde dann bei einer Eingabe von 100,225 nicht 100,23 zurückgegeben werden statt 100,22?
Muss das mal abchecken wie das sein soll...

24.06.2021 - 11:13 Uhr

Und was passiert wenn du weiter tippst mit dem Wert?

also 1, 0, 0, 0, 0 ...
=> 0, 0, 0, 0 ...

Den Ausdruck "if ((value % 1) > 0)" finde ich interessant. Da sollte ein Kommentar ran, der aussagt was das soll.

Ja, das stimmt...

Length == 3 wird nur aktiv wenn genau drei Nachkommastellen eingegeben werden. Was wenn jemand eine Zahl mit 5 Nachkommastellen hineinkopiert?

Daran habe ich gar nicht gedacht, wird korrigiert

24.06.2021 - 10:09 Uhr

Moin,

in meinem Projekt (MVVM) habe ich, unter anderem, eine Textbox mit Binding:


          <TextBox materialDesign:HintAssist.Hint="Bezeichnung "
                         Style="{StaticResource MaterialDesignFloatingHintTextBox}"
                         FontSize="18"
                         Padding="0" Grid.Column="1" 
                         VerticalContentAlignment="Bottom" 
                         HorizontalContentAlignment="Right"
                         Text="{Binding Wert, UpdateSourceTrigger=PropertyChanged, StringFormat=D, Mode=TwoWay}">
          </TextBox>

Gebunden an Property einer Klasse:


        public decimal Wert
        {
            get => _wert;
            set
            {
                if ((value % 1) > 0)
                {
                    string[] v = value.ToString().Split(',');
                    if (v[1].Length == 3) return;
                }
                _wert = value;
                NotifyPropertyChanged();
                NotifyPropertyChanged("MwSt");
                NotifyPropertyChanged("BruttoWert");
            }
        }

Das im if ist mein bescheidener Versuch Nachkommastellen über 2 zu verhindern.

Wie gesagt, die erste Eingabe klappt problemlos, wenn ich diese aber lösche, und "1000" eingabe erscheint nur "000" - laut Einzelkschritt wird die "1" aber in "Wert" geschrieben...
Habe auch keinen Ansatz...

Danke für Hilfe

18.05.2021 - 15:17 Uhr

... sieht mir

  
private SQL MySQL = new SQL();  
  

nicht gerade nach einer guten Umsetzung aus...

Ja, Sorry, gefällt mir auch nicht besonders, ich weiss (noch) nicht wie ich es anders machen soll.
(Darüber sollen die Enumerables der SQL Anfragen zurückgegeben werden)

Jo, dann mach erst mal Deine Implementierung sauber über async/await, was die Basis ist.
Ohne das machts wenig Sinn...

Jo, also zurück auf die Schulbank...
(kleine Ausrede: async und co waren in der Ausbildung nicht enthalten...)

18.05.2021 - 10:40 Uhr

Moin,

ich versuche in MVVM eine ObservableCollection (OC) asyncron zu laden und die Daten in einer DataGrid anzeigen zu lassen.

Basis ist folgende:


private SQL MySQL = new SQL();
public ObservableCollection<Model> OC { get; set; }
...
OC = new ObservableCollection<Model>(MySQL.GetSomeStuff()); //

Und eine Datagrid, irgendwelcher Daten harrend...

Also habe ich versucht für ein besseres Verständnis und um hinter die Mechanik von await/async/etc. zu kommen und zu Verstehen, fertige Lösungen zu testen und analysieren.
WPF-Performancetipp Teil 2: „ObservableCollection“ synchronisieren


BindingOperations.EnableCollectionSynchronization(OC, _listLock);
Task.Run(() => LoadData());

private async void LoadData() // Fehlermeldung: In dieser Async-Methode fehlen die "await"-Operatoren, weshalb sie synchron ausgeführt wird.
        {
            OC = new ObservableCollection<Model>(MySQL.GetSomeStuff());
        }

hat nicht funktioniert... OC.Count = 0

Eine andere Vorgehensweise war:


            App.Current.Dispatcher.BeginInvoke((Action)delegate ()
            {
                OC = new ObservableCollection<Model>(MySQL.GetSomeStuff());
            });

OC.Count = 300+, aber DataGrid Leer...

XAML:


    <Window.DataContext>
        <vm:MainViewModel />
    </Window.DataContext>
...
                    <DataGrid 
                              AutoGenerateColumns="False"
                              ItemsSource="{Binding OC, IsAsync=True}"
                              SelectedItem="{Binding SelectedRow}"
                              CanUserAddRows="False"
                              IsReadOnly="True"
                              RowDetailsVisibilityMode="{Binding RowDetailsVisibilityMode}"
                              materialDesign:DataGridAssist.CellPadding="8,12,8,12"
                              Margin="0,0,0,12" Grid.Row="1" 
                              SelectionMode="{Binding SelectionMode}"
                              SelectionUnit="FullRow">
                              ...
                  </DataGrid>

Ich habe leider keine Ahnung was ich falsch mache...

06.04.2021 - 15:47 Uhr

(Eine zB. Absenden() Aktion in einem Business Objekt "Angebot" ist eher kein gutes, modernes OOP Design).

Sorry, ich bin die Arbeit mit Klassendiagrammen nicht gewohnt...
Ist ja auch nur eine erste Fassung.

06.04.2021 - 15:44 Uhr

(VS19/C#) Ist in Dia erstellt, für mein Prüfungsprojekt

06.04.2021 - 15:42 Uhr

Deine Feldernamen sehen ehr nach Java aus){gray}

Wurde mit Dia 0.97.2 erstellt, deiner Bemerkung folgend, darf ich annehmen, dass meine Wahl hinsichtlich der Zeichensoftware falsch war.

06.04.2021 - 15:20 Uhr

Moin,

auf die Gefahr hin hier nicht am richtigen Ort zu sein...

Ich muss an einem Klassendiagramm arbeiten, die Grundlegenden Mechaniken sind soweit geläufig, die Praxis fehlt mir aber.

EIne der Klassen enthält eine ObservableCollecion.
Nun bin ich mit nbicht sicher wie und ob ich den Datentyp und die Beziehung der OC richtig darstelle.


public ObservableCollection<Innentür> innentuerliste { get; set; }

Warenkorb enthält eine Auflistung von Türen


public ObservableCollection<Dekor> dekor{ get; set; }

Eine Tür enthält ein Dekor aus der OC (auch wenn ich darüber noch mal nachdenken muss...)
Es sollen Dekore ausgelesen werden und eines davon in der Klasse Innentür neu instanziert, in etwa...

Ich hoffe meine Anfrage war verständig.
Habe ich das richtig gemacht?

Danke.

18.02.2021 - 12:17 Uhr

Danke, hat geholfen

ich nehme an RegEx mag niemand 😁

18.02.2021 - 11:56 Uhr

PHP serialisiert in ein proprietäres Format. Das zu verwenden ist halt prinzipiell schon quatsch.
Leider ist das aber gar nicht so selten (vermutlich weil PHP Entwickler leider immer noch nichts von Standards verstehen).

Darauf habe ich kein Einfluss, ist aus WooCommerce exportiert und muss ich genau so nehmen

Das Glück ist, dass man aber sehr viele Google Treffer hat, die einem die Lösung schon gibt.

>

Mag nicht so aussehen , aber ich habe sehr lange gesucht und die meisten Suchergebnisse waren für mich nicht brauchbar...
oft wird auf das NuGet Paket verwiesen oder im falschen Kontext

Hättest Du das einfach mal gegoogelt oder die Forensuche benutzt, dann wärst auch in unser anderes Thema dazu gekommen 🙂
>

Habe ich auch gemacht, DAS! habe ich aber nicht gefunden!
Den deserialisierer teste ich mal, ich hatte ja eigentlich gehofft das mit RegEx zu machen zumal ich aus dem ganzen String
der 2281 Zeichen lang ist nur 3 Werte benötige aber den regulären AUsdruck (noch) nicht hinbekomme

18.02.2021 - 11:08 Uhr

Warum splittest du den String nicht in ein Array, als Trennzeichen '"Value"' nehmen, dann im darunter gesplitteten Array[':'] drittes Element auslesen.

Ich probiere das mal, nach ";" trennen und den string im array nach "Value" auslesen...


s:5:"Value";s:2:"15"

s = String, Länge 5 - Wert "Value"
darauf folgt:
s = String, Länge 2 - Wert "15"

muss ich im ganzen serialisierten string machen

18.02.2021 - 10:59 Uhr

Die Zeichenkette ist nur ein Ausschnitt.

Die Quelle ist ein Serialisiertes PHP-Objekt, zu lang um das in ein Array einzulesen.
ich weiss nicht ob ich den kompletten string hier posten darf.

18.02.2021 - 09:08 Uhr

Moin,

ich habe ein serialisiertes PHP Objekt (Nein, Thema gehört nicht zu Web-Technologien),
dies möchte ich entweder deserialisieren oder per RegEx spezielle Werte auslesen.

Ausschnitt:
i:1;s:9:"UnitPrice";i:0;s:5:"Value";s:2:"15";s:9:"FieldName";s:20:"....

Nun muss der Wert nach Value ausgelesen werden.

serial = serialisiertes PHP Objekt
s = List<string> wo die Werte hinein sollen



                        var rx = new Regex("\"Value\"", RegexOptions.Compiled | RegexOptions.IgnoreCase);
                        Match match = rx.Match(serial);
                        while (match.Success)
                        {
                            s.Add(serial.Substring(match.Index + 14, 4).Replace("\"", ""));
                            match = match.NextMatch();
                        }

Das ist aber leider etwas schwammig....

Nun wollte ich es über:


var output = string.Join(";", Regex.Matches(serial, "\\\"(.*?)\\\"")
                                                   .Cast<Match>()
                                                   .Select(m => m.Groups[1].Value));

versuchen.

Ideal wäre es evtl wenn ich den Wert nach: s:5:"Value"; auslese, dies bekomme ich mit RegEx nicht hin.
Kann ich überhaupt eine solche Zeichenkette mit RegEx verwenden?
Ist dieser gedankengang Zielführend? oder soll ich mich besser an eine deserialisierung machen?
Gibt es für eine solche deserialisierung DesignPatterns?

Danke

04.02.2021 - 11:35 Uhr

Das "Grid mit SharedSizeGroup in einem ItemsTemplate" mache ich auch noch, dafür fehlt mir etwas Erfahrung.

Vorerst mache ich mich an Platoon's:
http://www.nullskull.com/a/1382/styling-the-wpf-calendar-to-resemble-outlooks-month-view-calendar.aspx
ran, nicht zwangsläufig im Outlook-Style eher im Material-Style aber es wird gut erklärt.

Danke

02.02.2021 - 13:43 Uhr

Moin, ich möchte wie angeteast in einer App einen Monatskalender (u.a.) erstellen,
in welchem Einträge/Termine erstellt werden können. Habe sowas leider noch nie gemacht.
Ausdrücklich nicht per NuGet, da so kein Lerneffekt.
Enthält ein <Calendar/> Element, WPF/MVVM kein Muss

Meine (unausgegorenen) beiden Ansätze bisher:

  1. Ein Grid mit 7 Spalten und 5 Zeilen + 1 für Wochentage
  • 35 Elemente die alle ein Binding brauchen?
  • keine rechte Vorstellung von der Objekt/Klassenstruktur...
  1. Ein Datagrid
  • SpaltenHeader: Wochentage
  • Klasse (Prop: Mo-So, Kalenderwoche, ...)
  • Darstellung des Kalendermonats durch Kalkulatuion der Kalenderwoche oder mit <Calendar/>

gibt es noch andere Ideen?

22.01.2021 - 15:21 Uhr

Fehlermeldung: "Eine foreach-Anweisung kann nicht für Variablen vom Typ "MainViewModel.VersandDaten" verwendet werden, weil "MainViewModel.VersandDaten" keine öffentliche Instanz- oder Erweiterungsdefinition für "GetEnumerator" enthält."

"Wie poste ich richtig" ist manchmal schwer das Thema in den wenigen Worten zu formulieren...

Habe die Lösung:

           
 foreach (var item in VersandListeData)
            {
                var v = item.VersandDaten;
                foreach (var oc in item.OC) // <- musste auf die OC zugreifen...
                {
                    _octoXLSX.Add(new OCtoXLSX
                    {
                        ... // Hier wird VersandListeData für das schreiben in die XLSX aufbereitet
                    });
                }
            }

Gibt es Erfahrungswerte wie man per foreach z.B. eine OC in die Zellen schreibt?

22.01.2021 - 14:19 Uhr

Moin, ich wusste nicht genau wie ich mein Problem in der Überschrift beschreiben sollte...

Ich habe eine Observablecollection(OC) namens VersandDaten.
die Klasse enthält als Propertys wiederum eine OC (Versandpositionen) und eine Klasse mit Name/Anschrift etc.

Num muss ich für den Export in eine XLS jede Versandposition mit der Zugeordneten Adresse versehen.

Mein Ansatz:


            foreach (var item in VersandListeData)
            {
                
                foreach (var v in item.VersandDaten)
                {
// hier dann die Zeilen und Spalten für eine Klasse zusammenstellen mit welcher die XLSX befüllt werden kann.
                }
            }

Nur, mein Ansatz mit var v in item.VersandDaten funktioniert nicht, hat jemand eine Idee?
Ich möchte nur ungern jede Versandposition mit Adresse versehen.
Ich hoffe mich verständlich formuliert zu haben.

Danke

08.01.2021 - 10:17 Uhr

Datum A und B sind Von und Bis
Datum C meint ein spezifisches Datum

Beide suchen in der selben Spalte

... WHERE datum > 'DateA' AND < 'DateB
... WHERE datum = 'DateC'

es sollte klar sein, das bei einer Abfrage A und B beide ein Datum haben müssen und C keines
und umgekehrt...

ist in MVVM kein Ding - da käme ich allein drauf, in CodeBehind jedoch...

07.01.2021 - 11:02 Uhr

Moin, habe ein kleines Problem... (code behind)

Ich habe 3 DatePicker. Von / Bis und Datum

Von/Bis und Datum müssen sich dabei einander ausschließen (nullen)
da beide in MySQL diesselbe Spalte filtern sollen.

Nur resultiert eine Änderung im Datepicker ja im SelectedDateChanged Event.
Ich kann ja nicht in den Events der jeweiligen DP den/die anderen DP nullen.
Also habe ich es mit bool's und if 's probiert - ich komme nicht auf'n Zeiger...

Ich kann dem MurksCode ja mal hier bei Bedarf posten.
Hatte ja nie eine Notwendigkeit so etwas konstruieren zu müssen
und leider gibt Google da auch nichts her.

05.01.2021 - 12:12 Uhr

Moin, ich habe ein Projekt (MVVM) in welchem eine DataGrid mit aus MySQL eingelesenen Werten, sowie (aus der linken Seite) mehrere Filteroptionen enthalten sind.

ComboBox, ToggleButton, TextBox und DatePicker

Damit möchte ich den Query zusammenbauen.

Zwar habe ich eine grobe Vorstellung wie das bewerkstelligt werden kann, aber vielleicht habt ihr ja eine gute Idee.

Meine Soweit:
Binding an Property ->
Bei NotifyPropertyChanged()-Event: Aufruf Methode zum Abfragen aller Propertys ->
...

Beim "Zusammenbauen" bin ich mir jedoch nicht sicher

Danke im Vorraus für eure Ideen

10.11.2020 - 11:09 Uhr

Habe es hoffentlich fertig, Danke.

10.11.2020 - 10:38 Uhr

Hallo echdeneth,

Du könntest die Preise/Zonen auch über eine mathematische Funktion beschreiben und dann runden 😄

Gruss Lhyn

Schön wärs...

10.11.2020 - 10:33 Uhr

Wo ist jetzt genau das Problem...

Jetzt, wo du es erwähnst...

Ich hatte es mit komplexer vorgestellt 😁

10.11.2020 - 10:17 Uhr

Hört sich nach UPS an..

(Fenthols)Raben, aber Ja.

09.11.2020 - 15:54 Uhr

Sorry, falls die Kurzbeschreibung etwas haklig ist.

Ich habe ein Formular (WPF / MVVM) in welchem unter anderem aufgrund von Gewicht und Abmessung
einer Sendung dessen Preis berechnet werden soll.

Diese Tabelle hat im Original ca. 50 Zeilen (Gewicht in 50kg Schritten) mit 7 Spalten (Zonen)
und darin natürlich Preise.

Es soll dann nach Zone und Gewicht abgefragt werden.

Der Datensatz muss ja nicht unbedung eine Tabelle sein.

Mir fällt nur keine effiziente Methode für den Datensatz ein.

Danke für Hilfe

23.10.2020 - 10:14 Uhr

Habe eine ObservableCollection mit object als Datentyp.

Die Zuweisung:

            
PageCollection.Add(new Page1());
PageCollection.Add(new Page2());

Einen Zähler als Property, und 2 Methoden (über ICommand Binding)
mit denen der Zähler hoch und runter geht und entsprechend CurrentPage gesetzt wird:

        
private void Vor_OnClick(object obj)
        {
            if (Counter < 11) Counter++;
            else Counter = 10;

            CurrentPage = PageCollection[Counter];
        }

        private void Zur_OnClick(object obj)
        {
            if (Counter != 0) Counter--;
            else Counter = 0;
            CurrentPage = PageCollection[Counter];
        }

Genau was mir vorschwebte. Jezz sach nicht, des is ooch widder Kacke... 8o

22.10.2020 - 15:18 Uhr

Moin, ich tat mich etwas schwer mit der Kurzbeschreibung.

Ich möchte für ein Projekt (über XAML - Grundwissen, Übersicht) in meiner Schule
die Präsentation auch in XAML schreiben.
Mein erster Ansatz ist, mehrere Grids zu schreiben und diese dann wie in PowerPoint durchzuschalten.
über: Visiblity="{Binding Page1}", Visiblity="{Binding Page2}", SwitchCase, usw...
Dies schien mir aber nicht sehr elegant.

Existiert hierfür ein DesignPattern? Ich wüsste nichtmal wie ich dies in Google beschreiben sollte.

Eine Variante mit der eine Grid an eine ObservableCollection gebunden ist, in welcher dann über Klassen die Propertys des Grids und dessen Inhalte und deren Prop. gesetzt werden, wäre Optimal - aber übersteigt momentan (falls möglich) meine Fähigkeiten.

In der Hoffnung mich unmissverständlich Formuliert zu haben...

Danke

09.10.2020 - 09:47 Uhr

Navigating between views in WPF / MVVM

Schau ich mir an und baue ich mal nach....

Persönlich finde ich aber sowieso meinen zweiten geposteten Link
>
besser

Den Link kenne auch meinen eigenen Recherchen. Ich störte mich ein wenig an MVVM Light,
dachte ich muss es erstmal ohne probieren.

Leider kam es bei MVVM Light zu Fehlern bei den Namespaces die ich trotz Recherche nicht beheben konnte.

09.10.2020 - 09:30 Uhr

Moin,

wiedermal muss ich mir Gedanken über das Update-System machen. (Auf FTP-Server)

Mein bisheriger Ansatz war:

  • Fertig kompilierte Installationen nachträglich mit der Versionsnummer versehen und hochladen
  • Dann prüft die App anhand der Dateiliste die dortigen Versionen und vergleicht die höchste mit der Programmversion.

Nur gab es damit öfters Probleme und auch aus anderen Gründen möchte ich es anders machen.
Es gibt aber im Internet keine Vorschläge dazu und oder meine Suchbegriffe sind untauglich.

Gibt es dazu DesignPattern oder wie geht ihr dabei prinzipiell vor?

Danke

09.10.2020 - 08:49 Uhr

Warum benutzt du die View-Klasse ProduktionslisteView (anstatt der ViewModel-Klasse) in deinem MainViewModel?
Das wurde doch schon ausgiebig in
>
besprochen...

PS: Und dein letzter Beitrag deutet darauf hin, daß du Referenzen nicht wirklich verstanden hast.

Switching between WPF XAML views using MVVM DataTemplate Ich habe deinen Link als Vorlage benutzt

01.10.2020 - 13:14 Uhr

...Das wurde doch schon ausgiebig in
>
besprochen...

Ich hatte es ja eigentlich so gemacht... (naja, Dachte...) 🙁

...daß du Referenzen nicht wirklich verstanden hast...

möglicherweise, leider - ich kann leider nur begrenzt abstrahieren...

01.10.2020 - 09:31 Uhr

... setz einfach die gebundene Property auf null ...

hatte das probiert:

private void GotoProduktionView()
        {
            CurrentView = _produktionView;
            _produktionView = null; [B]<= Mist...[/B]
        }

Meintest du:

private void GotoProduktionView()
        {
            CurrentView = _produktionView;
            CurrentView  = null; [B]?[/B]
        }

Ich wüsste auch nicht an welcher anderen Stelle ich CurrentView auf Null setzen sollte.

01.10.2020 - 08:57 Uhr

Moin,

ich wollt euch mal fragen ob das was ich gemacht habe, halbwegs unter "Sauberer Code" fällt.

Ich habe mehrere UserControl (US), die im MainView als Resource gelistet sind.
Nun bleiben ja - ohne den auskommentierten Teil - die ViewModels erhalten nachdem
man eine UC ausgewählt hat. Mit Disposen habe ich keine Erfahrung und das neu deklarieren funzt eigentlich.
Gibt es da bedenken und sollte ich es anders machen?


<Window.DataContext>
        <vm:MainViewModel/>
    </Window.DataContext>

    <Window.Resources>
        <DataTemplate DataType="{x:Type vm:ProduktionslisteViewModel}">
            <v:ProduktionslisteView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:BestellungenMainViewModel}">
            <v:BestellungenOverView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:LieferungenMainViewModel}">
            <v:LieferungenOverView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:PrioViewModel}">
            <v:PrioView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:ReklamationenViewModel}">
            <v:ReklamationenView />
        </DataTemplate>
    </Window.Resources>

MainViewModel:


        private ICommand _produktionCommand;
...

        private object _produktionView;
...

_produktionView = new ProduktionslisteView();
...


        public object ProduktionCommand => _produktionCommand ??
            (_produktionCommand = new RelayCommand(x => { GotoProduktionView(); }));
...
        private void GotoProduktionView()
        {
            CurrentView = _produktionView;
            //_produktionView = new ProduktionslisteView();
        }
...

27.08.2020 - 13:37 Uhr

Hast du denn nach den DB-Aktionen im ViewModel immer das passende OnPropertyChanged(nameof(ObservableCollectionPropertyName)) aufgerufen?

Funktioniert (anscheinend) nicht bei anderen ViewModels

Wenn jede Seite sein eigenes VM (mit eigener ObservableCollection) hat, dann mußt du alle betreffenden Seiten aktualisieren (z.B. über das MainViewModel).

Muss ich da nicht auf die entsprechende property zugreifen können?
Wahrscheinlich über Events, worin ich mehr Übung brauche...

Und was klappt nicht beim Binden der MessageQueue

Sorry funzt jetzt, Deppenfehler X(


// dieser Teil befindet sich zum Testen in einer Property
messageQueue.Enqueue("Test: " + i);
 i++;
isActive = "True"; // Property zum Aktivieren

private SnackbarMessageQueue messageQueue = new SnackbarMessageQueue();

public SnackbarMessageQueue MessageQueue
        {
            get => messageQueue;
            set => messageQueue = value;
        }

27.08.2020 - 11:51 Uhr

So, läuft ziemlich gut.
Nun ergaben sich 2 Probleme, ein kleines und ein größeres.
(Soll ich dafür nen neuen Thread aufmachen?)

Das kleine:
Ich muss auf meine geliebte SnackBar (von: MaterialDesignThemes) verzichten,
da ich die MVVM Bindung zum MessageQueue nicht geschissen kriege.
Die Dokumentation auf der Seite ist - für mich zumindest - sehr vage.

Ich habe das gerne für Fehler-, Update und andere Meldungen verwendet.

Das große:
Wenn ich auf einer Seite irgendein SQL DB-Update mache (neuer Eintrag/Update z.B:),
wird auf einer anderen Seite (nach Wechsel dahin) kein Update der ObservableCollection(OC) gemacht.
Nun würde ich gerne auf ein Update-Button verzichten. Soll/Kann/WäreEsWeiseWenn ich die OC
Disposable mache? Habe damit keine Erfahrung, nur flüchtig von gelesen.
Oder kann ich ein Neuladen der betreffenden Seite (UserControl) initiieren?