Laden...

Forenbeiträge von ThomasE. Ingesamt 461 Beiträge

06.05.2019 - 15:21 Uhr

Hallo,

also dieses hier:


var arInvArea = arInv.Area.FirstOrDefault(p => p != null && p.WithSwimmingPool)?.Select(p => p.Units(ReportDate));

ist Schwachsinn, kann nicht funktionieren.
->


double? arInvArea = arInv.Area.FirstOrDefault(p => p != null && p.WithSwimmingPool)?.Units(ReportDate);

.

dieses:


var arInvAreaObject = arInv.Area.FirstOrDefault(p => p != null && p.WithSwimmingPool);
if(arInvAreaObject != null)
{
    var arInvArea = arInvAreaObject.Units(ReportDate);
    if(arInvArea == wasauchimmer)
    {

    }
}

dagegen liefert ja im Prinzip dasselbe Ergebnis wie vom TE mit dem Unterschied, daß nicht die kompletten Areas durchgeschliffen werden müssen usw...


 var arInvArea = arInv.Area.Where(p => p.WithSwimmingPool).Select(p => p.Units(ReportDate)).FirstOrDefault();

nach dem 'Select' bekommt er ein IEnumerable<double> zurück und nimmt danach einfach den ersten Eintrag.

Bei mir dagegen selektiert er sofort nur den ersten Eintrag und gibt dann das Ergebnis zurück.

Oder hab ich was übersehen?

Klar, der Aufbau ist anders aber geht es nicht um das Ergebnis?
Zumindest wäre mein Gedanke mit dem anderen Aufbau soweit gesehen, daß er den Fehler leichter finden könne...

[Edit1]Hab mal bei mir die Typen laut TE korrigiert, das naming brachte mich ein wenig durcheinander... und ich persönlich mag keine 'var'... 😉[/Edit2]

06.05.2019 - 08:57 Uhr

Hallo,

wie wäre es mit dieser Variante:


var arInvArea = arInv.Area.FirstOrDefault(p => p != null && p.WithSwimmingPool)?.Select(p => p.Units(ReportDate));

Um solche Fehler leichter zu finden, sollte man mal diese Queries extra ausführen:


var arInvAreaObject = arInv.Area.FirstOrDefault(p => p != null && p.WithSwimmingPool);
if(arInvAreaObject != null)
{
    var arInvArea = arInvAreaObject.Units(ReportDate);
    if(arInvArea == wasauchimmer)
    {

    }
}

Schöne Grüße

03.05.2019 - 08:47 Uhr

Hey,

ich denk, wenn ihr eine Kostenaufstellung im aktuellen Arbeitsumfeld erstellt (zum Vergleich) und eine Kostenaufstellung im Zusammenhang mit euren gedachten Lösungen vorbringt, dann habt nicht nur ihr selbst in der IT ein besseres Gefühl dafür, sondern es tut sich auch die Geschäftsleitung um einiges leichter.

Wenn ihr mit euren neuen Lösungen auf das ganze Jahr bezogen zumindest das doppelte einspart als die Lizenzen nur 1x kosten, steht ihr schon mal gut da.
Wenn die Löung(en) weniger als die Lizenzen ausmachen, ist dann die Frage, wie lange es dauert, bis sich diese rentiert haben. Hier wird es aber schon wesentlich schwieriger werden.

Noch besser ist es, wenn man schon mit einer (fast) fertigen Lösung ankommt und was herzeigen kann.

Kommt natürlich auch auf die Geschäftsleitung an....desto mehr man denen präsentieren/erklären/bezeugen kann, desto besser. Und noch besser, wenn man auf jede Frage von denen eine sinnhafte Antwort parat hat 😉

SG Thomas

24.04.2019 - 16:46 Uhr

Ok, um es noch abzurunden: decimal vs numeric

Grüße

24.04.2019 - 08:03 Uhr

Hallo,

vielleicht hilft dir das weiter: https://forums.asp.net/t/1115822.aspx

Hat ein ähnliches Problem mit dem float Datentyp in SQL.

Zudem hier in der Doku

Grüße

03.04.2019 - 11:26 Uhr

Hallo,

wir verwenden auch Aspose. Haben auch einen guten Support, melden sich spätestens nach einem Tag.
Wurden auch schon 2 Bugs auf die wir gekommen sind gelöst.

Bei uns werden Excel, Word, Pdf, Mailbody und Images von Emails in einem PDF zusammengefasst und danach die Qualtität reduziert um Speicher zu sparen.
Eine der letzteren Versionen von Aspose.PDF wurde eine effektive Lösung dazu eingebaut die Qualität zu verringern.

So zu unserer Anwendung zu dem Thema, da liegt man mit Aspose auf einen guten Weg.

SG Thomas

28.03.2019 - 11:05 Uhr

Hallo,

also wenn es an so etwas leichtem schon scheitert, frage ich mich wie du dann diese ExtMessageBox verwenden willst?

Grüße

22.03.2019 - 22:54 Uhr

Besten Dank, ist genau das was ich suche!

Aktueller ist man aber mit Graph 😉

Werde mir mal das genauer ansehen...

22.03.2019 - 13:27 Uhr

Hallo,

danke für die Infos und Fragen.

Es ist eigentlich nicht relevat was für ein WebClient es ist, der Kontext ist HTML, (JavaScript)TypeScript, Angular (noch nicht Version 2)

Ausführbar von überall möglich, Intra- und Internet, alle gängigen Browser, bei Microsoft ab Edge.

Das mit dem Browser-PlugIn hatte ich auch schon überlegt, müßte dann aber für die gängigsten Browser entwickelt werden und auch in den Tablets funktionieren...

Silverlight ist tot, ActiveX auch oder? Die neue Welt sieht ja anders aus...

Gibt es keine Möglichkeit das über das outlook office web zu realisieren? Das mit den lokalen Anwendungen aus den Browser heraus gefällt mir nicht so gut und würde ich nur als letzte Möglichkeit sehen...

Das MAPI muß ich mir noch genauer ansehen...

Danke auf jeden Fall...

22.03.2019 - 11:41 Uhr

Hallo, danke für die Info.

Ich kenne diese mailto: Variante, kann diese nicht verwenden.

Benötige wie ich schrieb eine andere Möglichkeit...

SG Thomas

22.03.2019 - 10:12 Uhr

Hallo,

ich habe eine Hürde zu überwinden und zwar geht es grundsätzlich darum:

  1. Aus einem WebClient soll z.Bsp. das outlook-online gestartet werden, in dem eine Mail verfasst werden kann
    oder
  2. Aus einem WebClient soll das am Desktop lokale Mailprogramm gestartet werden bzw. damit eben eine Mail verfasst werden kann

in beiden Fällen sollte es möglich sein, eine Mailboby-Vorlage, Empfänger und Cc, Subject sowie Anhänge mitgeben zu können.

Gibt es (am besten das Bsp. mit web-outlook) eine Art Verlinkung um sowas umsetzen zu können?
Wenn ja, mit welchen Suchwörtern sucht man danach im Inet oder hat vielleicht schon wer eine Verlinkung zu einem Beispiel dazu?

Wenn nicht, was gäbe es für Alternativen?

Bitte um Info, vielen Dank!

05.03.2019 - 15:42 Uhr

Mit 20 Km kann ich mir ein persönliches Intranet nur schwer vorstellen, kann auch meine begrenzte Erfahrung damit sein.

Da wäre die Leitungen von A bis nach B interessant. Ist diese durchgehend schwach oder nur einzelne Längen davon?

Wie ist diese verlegte Leitung grundsätzlich ausgelegt?
Laufen noch andere Leitungen (egal welche) daneben mit?
Zweigen diese öfters noch woanders ab?

Meine Fragen haben eigentlich nur was mit der Hardware zu tun 😁

05.03.2019 - 09:12 Uhr

Allerdings ein problem hab festgestellt das der DataReader bei den Problem Tabellen nicht komplett durch die Tabelle durch iteriert

Entweder wie von @inflames2k gesagt oder es fehlt dir einfach die Grundlage: OleDbDataReader

Um an diese Info zu kommen, kann man (in meinem Fall 😁 ) Bingen: https://www.bing.com/search?q=Oledbdatareader&pc=MOZI&form=MOZTSB

01.03.2019 - 16:08 Uhr

Der RAM läuft nicht voll
Hmm, mag sein. Trotzden klingt 3,8GB bei einem 32bit Prozess erstmal nicht so gut.

Diese hohe Auslastung hat mit dem ersteren Code von ihm zu tun, was mich auch nicht wundert. Für letzteres gibt es noch keine genaueren Informationen, da der Threadhersteller immer sehr knapp mit seinen Infos ist...

01.03.2019 - 13:58 Uhr

hast du es mal mit einer kleineren Pagesize versucht und geschaut ob der RAM immernoch voll läuft?

Der RAM läuft nicht voll die Fehlermeldung sagt folgendes aus:> Fehlermeldung:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt

Funktioniert das wirklich - auch wenn 'zeilenanzahl' kein Vielfaches von 'pagesize' ist?

Soweit ich es **nachgelesen **hatte, sollte es egal sein.

Ich verstehe nicht, warum er das unbedingt mit Oledb machen möchte, denn den derzeitigen Datenbanktyp hat er ja nicht genannt, oder?

Warum nutzt du nicht die Lösung der Prozedur, diese kümmert sich um das Paging, man muß halt nur die Prozedur aufrufen mit den notwendigen Parametern.
Dann kannst auch mit dem DataReader arbeiten und nicht mit DataTables...

Wenn es möglich ist, würde ich mal mit Sql Arbeiten und nicht mit Oledb und dann eruieren ob der Fehler noch immer auftritt.

Was ich so ein wenig gelesen hatte, hat es unter Umständen was mit dem .NET Framework zu tun unter dem man arbeitet und auch die Version vom VisualStudio, sind aber nur gelesene Vermutungen.

20.02.2019 - 09:37 Uhr

Hallo,

das was ich hier weiß ist das, daß dieser Code sicher nicht ganz richtig ist.

Für SQL gäbe es folgende Lösungen für das Paging:


CREATE PROCEDURE [dbo].[StoredProcName] 
    @page_size INT
    , @page_num INT
AS
BEGIN

    SET NOCOUNT ON;

    ; WITH RESULTS AS
    (
        SELECT *
            , ROW_NUMBER() OVER (ORDER BY <order_col> DESC) AS rn
            , ROW_NUMBER() OVER (ORDER BY <order_col> ASC) AS rn_reversed
        FROM <table>
    )
    SELECT *
        , CAST(rn + rn_reversed - 1 AS INT) AS total_rows
        , CAST(CASE (rn + rn_reversed - 1) % @page_size
            WHEN 0 THEN (rn + rn_reversed - 1) / @page_size
            ELSE ((rn + rn_reversed - 1) / @page_size) + 1 
            END AS INT) AS total_pages
    FROM RESULTS a
    WHERE a.rn BETWEEN 1 + ((@page_num - 1) * @page_size) AND @page_num * @page_size
    ORDER BY rn ASC 

END

Quelle dazu

Alternativ mit SELECT TOP und einer Nummern-Schlüsselspalte...

Hi, ich schreibe momentan eine Anwendung die diverese Datenbanksysteme unterstützen soll.

Mit ADO.NET kannst du das ganze so abstrahieren, daß du tatsächlich mehrere Datenbanktypen abdecken kannst, hier ein Beispiel dazu.

Für das Paging anderer Datenbanktypen kann ich leider noch nichts dazu sagen.

19.02.2019 - 09:08 Uhr

Hallo,

es wäre mal ein wenig Code nicht schlecht zu sehen und die ganze Fehlermeldung.

Zudem bitte das von Abt beherzigen: ADO.NET, gibt es natürlich auch für OLEDB...

16.02.2019 - 01:27 Uhr

Es macht keinen Sinn, dass 10000 Einträge in einer Tabelle stecken. Wer soll denn das lesen, geschweige denn bearbeiten können?
Deswegen gibt es Paging.

Ich denke das mit den 10000 war auch das Paging selbst gemeint. Also immer 10000 Einträge lesen und verarbeiten.

Bei Daten-schaufeln (Stammdatenimporte) kann das schon ein Thema sein...

Rest wurde ja schon genannt.

16.02.2019 - 01:22 Uhr

Das hier wäre eine (weitere) Möglichkeit:


private enum Baudrate : int 
{
      B_9600 = 9600,
      B_19200 = 19200,
      B_38400 = 38400
}

private void Test()
{
    int rate = (int)Baudrate.B_9600;
    Baudrate baudRateEnum = (Baudrate)9600;
}

Ist halt immer die Frage, wie notwendig das ist.
Wenn du das nur für eine konstante Auswahl benötigts im UI, könnte man diese Zahlen als konstante Werte direkt in einer ComboBox in der View oder im ViewModel in einer Liste unterbringen.
Somit würde sich der Umstand erübrigen, da es unnötig wäre in dem Fall.

SG

[Edit2] mal bestimmte Texte hervorgehoben, wie sie von Anfang an drinnen standen, im Bezug zu den nachfolgenden Beiträgen...

11.02.2019 - 01:22 Uhr

Hallo,

was du hier versuchst ist, Klassenobjekte zu sortieren und nicht die Klassenobjekte durch seine Klassen-properties.

Das ArrayList.Sort nimmt dir diese Arbeit nicht ab!

Es wird dir nicht viel übrig bleiben als selbst zu sortieren.
Jetzt stellt sich die Frage, wie deine Aufgabe deklariert ist? Gibt es da Vorgaben?

Grüße

08.02.2019 - 07:15 Uhr
  1. Multi-Tasking sollte es können,** also 1 Client ist nicht erreichbar**, sollte nicht die Leistung des anderen Beeinträchtigen Geschwindigkeit.

Hallo,

was mich irritiert ist der markierte Text. Normaler weise spricht man davon, daß der Server nicht erreichbar ist und nicht umgekehrt??
Was steckt da im Hintergrund für diese Auslegung?

Grüße

30.01.2019 - 13:31 Uhr

Wirkt als ob Du extrem chaotisch an die Sache gehst.. ich weiß nicht, wie man Dir da helfen soll.

Haha, das erinnert mich manchmal an mich selbst 😁

Zunächst sollte er mal den oberen (kopierten) code kapieren, bevor er mit asynchronität dazwischenfunkt und sich am Ende noch weniger auskennt 😉

Also zurück zum 1. Beitrag, hast du es geschafft den gesamten Code zu verstehen oder hängt es da noch irgendwo im Verständnis?

:rtfm:

SG Thomas

30.01.2019 - 08:08 Uhr

Ein Feld ist nur ein "dummes" Klassenmember; also eine Variable.
Eigenschaften sind jedoch Abstraktionen; Du kannst beim Setzen (oder Lesen) noch zusätzliche Dinge tun (zB Lazy Loading, Events feuern..) - was bei einem Feld nicht geht.
Das beißt sich meiner Meinung nach mit Schichtentrennung und dumme Datenklasse 😉

Das sehe ich nicht so.

Ist klar, C# erlaubt dir soweit alles in der Richtung, nur hängt es vom Programmierer ab, ob er sich an gewisse Regeln hält und somit ein stabiles sicheres System zu erstellen.

Klar kannst du das alles machen und noch mehr, nur ist es weit von einer sauberen Lösung entfernt.

29.01.2019 - 07:21 Uhr

Hallo,

also zuerst, es gibt auch für XML und XAML Tags hier, dann sieht es nicht so Grau in Grau aus...

<EinXmlTag></EinXmlTag>

Du sagtest du hast ein Binding, was man auch annehmen könnte...
Warum änderst du nicht einfach den Wert im Hintergrund im ViewModel, warum dann direkt in der View? Ist doch unnötig...

SG Thomas

24.01.2019 - 23:07 Uhr

Hallo nytrec,

wie sieht denn der aktuelle Code aus? Oder soll das Rückwärts ausgeben mit dem obigen Beispiel Listenelement gemacht werden?

Meine Fragen beziehen sich auf das:

Listenelement naechster, vorheriger;

da vorheriger oben nicht existiert?

Grüße

18.01.2019 - 09:21 Uhr

Hallo,

auf Grund des Fehlers könnte man annehmen, daß bei


        private void OpenTiaCommand_Executed(object sender, EventArgs e)
        {
            if(_Tia==null)
            {
                _Tia= new TiaPortal();
                _Projects=_Tia.Projects;
                _Project=_Projects.Open("Pfad");
            }
        }

das _Project längere Zeit in Verwendung ist und darauf zugegriffen wird, auch dann wenn


        private async Task Configuration()
        {
            if(_Tia==null)
            {
                _Tia= new TiaPortal();
                _Projects=_Tia.Projects;
                _Project=_Projects.Open("Pfad");
            }
            //HIER ENTSTEHT DIE EXCEPTION
            ProjectLibrary _projectLibrary = _Project.ProjectLibrary;


        }

ausgeführt wird.

Also müßte man es kontrollieren, daß wenn er bei private async Task Configuration() ankommt, das _Project=_Projects.Open("Pfad"); bei private void OpenTiaCommand_Executed(object sender, EventArgs e) noch in Arbeit ist.

Grüße

14.01.2019 - 14:34 Uhr

Hallo,

ich möchte mich für die Verlinkung DataFlow bedanken, das ist nämlich genau das, was ich auch benötige!

Hab mir das angesehen und es ist wirklich ein tolle Sache! Vereinfacht die Arbeit ungemein!

Danke!

10.01.2019 - 15:23 Uhr

🤔 🤔

Also space ist dann der falsche Ausdruck zu dem Sinn hier und die Spaghettischreibweise ist schwer zu lesen, tut mir leid 😉


textBox1.Text = textBox1.Text.Remove(0, countspaces);

countofspaces wird nie zurückgesetzt, was bedeuted, daß hier irgendwann mal eine Exception geworfen wird.

Wie schon gesagt, am Ende wirst du einen Leerstring in einen int konvertieren, was ebenfalls scheitert.

Zeig mal den aktuellen Code...

Grüße

10.01.2019 - 09:52 Uhr

Hallo,

ok hab mich falsch ausgedrückt, es war eine Feststellung daß das wegen den unterschiedlichen Typen nicht funktionieren kann.

Die Lösung müßte anders ausehen.
Wie, kann ich leider nicht sagen, da ich mom. viel am Hut hab...

Grüße

10.01.2019 - 08:55 Uhr

Hallo,

so wie ich das verstehe, versuchst du das Dictionary mit einem anderen Typen zu erstellen als es vorgegeben ist: (TComponent


// Vorgabe:
KeyedByTypeCollection<Dictionary<Guid, IComponent>>
// Versuch:
new KeyedByTypeCollection<Dictionary<Guid, TComponent>>()

Grüße

10.01.2019 - 08:25 Uhr

Hallo,

was wohl gemeint ist, daß das Käse ist:


        public void spacecounting()
        {
            foreach (char av in textBox1.Text)
            {
                countspaces++;
            }
        }

denn er berechnet keine spaces sondern nur die Textlänge.

Wenn ich mir das ansehe:


textBox1.Text = textBox1.Text.Remove(0, countspaces);

weiß ich sofort, daß du einfach nur die Leerzeichen entfernen möchtest, das geht einfacher:
String.Replace

Somit könntest dir auch die Methode spacecounting sparen.

Die Eventmethode textBox1_KeyPress ist auch ein Stinkekäse, denn da wird immer mit dem char a geswitcht. Zudem bleibt in der Methode alles in der textBox1.Text drinnen stehen oder?
Z.Bsp.: 5 + 3
Das dann bei button1_Click in eine Nummer zu konvertieren geht natürlich nicht.

Grüße

09.01.2019 - 14:31 Uhr

Ein Listenfanatiker 😉

Also wenn du eine Liste mit Objekte hast und alle oder bestimmte Objekte in einer anderen Liste ebenfalls eintragen möchtest (selbige Objekt-Instanzen), dann muß die 2te Liste natürlich wie schon gesagt ebenfalls mit new initiieren und nicht einfach die vorhandene der neuen 2ten zugeweisen.

Somit müßtest du 2 versch. List-Instanzen besitzen.

Sollten jetzt trotzdem Einträge beim Clear der temporären aus der permanenten Liste verschwinden, so hast du sicher einen Bug drinnen.

Wenn du deinen Code preis gibts, kann man eher was erkennen...

Grüße

08.11.2018 - 10:17 Uhr

Um abwärtskompatibel zu bleiben, müßtest die Methode überladen und mit den neuen Parametern erweitern...

11.10.2018 - 08:40 Uhr

Mit öffentliche Eigenschaft erstellen dachte ich eher an sowas:

Das ist dann eher eine Design-Frage, mein Beispiel hätte anders ausgesehen 😉

Gemeint ist wohl:
b) darin eine öffentliche Eigenschaft erstellen....

Hätte eher gesagt werden müssen, Meine Idee wäre:

Aber offtopic..

10.10.2018 - 08:18 Uhr

Hallo,

ok ich gebe mich geschlagen 😉

Ich meinte eine Klassenvariable die Klassenintern global ist. Wußte ehrlich gesagt gar nicht, daß dieser Ausdruck so gar nicht verwendet werden kann, da ich noch nie eine 'globale Variable' selbst erstellen mußte oder damit direkt zu tun hatte.

Danke für die Info 😁

b) darin eine öffentliche Eigenschaft erstellen, ...

Nein, mit Variable meine ich ein 'Feld' und keine Eigenschaft, ist ja dann doch ein eindeutiger Unterschied. Zudem sind bei mir Felder immer 'private'.

09.10.2018 - 16:40 Uhr

a) eine eigene Klasse erstellen, die sich um die Kommunikation mit dem Seriellen Port kümmert
b) **:::

Ich wüßte nicht was man da falsch verstehen kann wenn man richtig liest 😉

08.10.2018 - 14:58 Uhr

Wie genau gehe ich vor?

a) eine eigene Klasse erstellen, die sich um die Kommunikation mit dem Seriellen Port kümmert
b) darin eine globale Variable Klassenvariable (Feld) erstellen, die den gesamten Buffer einer Anfrage-Antwort darstellt
c) wenn der Button im ViewModel betätigt wird, kann die Anfrage in deiner neuen Klasse gestellt werden (Methode die du dafür erzeugt hast)
d) während in deiner neuen Klasse von der Anfrage immer wieder Antworten reinkommen, alle Teile in den globalen Buffer die Klassenvariable (Buffer) schreiben, solange bis alles da ist
e) sind nun alle Daten eingetrudelt, können sie geparst werden und am besten danach den globalen Buffer leeren/null'en (wie auch immer)
f) Deinem ViewModel mitteilen, daß die Anfrage beendet wurde und sie mittels Event benachrichtigen
g) Im ViewModel kann dann der fertige Wert angezeigt werden (Im Event können alle möglichen Informationen mitgegeben werden, Rohdaten, geparste Daten,...)

Wie was wo funktioniert, siehe andere Beiträge...

SG Thomas

18.09.2018 - 15:54 Uhr

Habe nur nach :::

Hey,

😉 ist klar das da mehr zum Vorschein kommt als nur Xml-Serialisierung. Hast in der Suche das XML vergessen.

Ist übrigends auch immer ein Hindernis, richtig zu suchen. Kenn ich sehr gut 😁

10.09.2018 - 11:07 Uhr

Hallo,

ich finde du hast mit der Schnittstelle schon die bessere Lösung gefunden und würde dabei bleiben.

Grüße

29.08.2018 - 13:46 Uhr

Versteh ich nicht, wenn man so etwas entwickeln muß und man noch keine Kenntnisse darüber hat, müßte das normal mit einberechnet werden.

Besonders wenn es um so grundlegende Dinge geht.

Die Leute hier können nichts dafür, für deine Situation in der du gerade steckst.
Eine Antwort zur letzten Frage hast ja schon bekommen...

29.08.2018 - 13:36 Uhr

Hallo,

hier mal ein Beispiel wie es damals umständlich jedoch einfach ersichtlich gemacht wurde:


            private Cmdb_ci myVar;
            public Cmdb_ci cmdb_ci
            {
                get
                {
                    if(myVar == null) 
                    {
                         myVar = new Cmdb_ci()
                         return myVar;
                    }
                    // Hier stellt sich die Frage, was bei .ToString() zurückgegeben werden kann?: (Könnte man unter Umständen String.IsNullOrEmpty oder String.IsNullOrWhitespace verwenden)
                    if(myVar.ToString() == String.Empty) 
                    {
                         myVar = new Cmdb_ci()
                         return myVar;
                    }
                    return myVar;
                }
                set { myVar = value; }
            }

Natürlich ist @LaTino's Beispiel die bessere Alternative, wobei bei


!string.IsNullOrEmpty(myVar)

ich mir nicht sicher bin, ob das auch für Objekte funktioniert, die kein 'string' sind?

Grüße

16.08.2018 - 12:33 Uhr

Wie sieht der bisherige Code dazu aus, was wurde schon umgesetzt und gibt es ein Bild wie es derzeit aussieht?

Grüße

07.08.2018 - 10:24 Uhr

Hallo, die DataTable im Hintergrund ist etwas umständlich für dieses Vorgehen...

Erstelle DataBinding-Objekte die den Inhalt (Zeilen/Tabelle) repräsentieren.

Danach kann man voll leicht deine Anforderungen umsetzen --> alles Background ohne direkten Eingriff in das UI....

Grüß

03.08.2018 - 12:36 Uhr

Hallo,

im lokalen Browser-Cache? (leeren)

02.08.2018 - 14:25 Uhr

Das geht, weil wir, wie beschrieben, dass Caliburn.Micro Framework verwenden. Caliburn bindet Text an die Property Text über den Namen.

Danke für die Info. (Obwohl ich es etwas unschön finde 😉 )

Weil der FocusManager im XAML nicht funktioniert hat bzw. der Fokus aus dem ViewModel heraus gesetzt werden soll.

Und das geht nicht? (Kann es mom. nicht selber testen...)


<Style.Triggers>
    <DataTrigger Binding="{Binding IsTextbox1Focused}" Value="True">
        <Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource Self}}" />
    </DataTrigger>
</Style.Triggers>

02.08.2018 - 11:43 Uhr

Also, wieso verwendet ihr nicht einfach den 'FocusManager' im XAML?

Dann erspart man sich den ganzen hickhack...

Und noch was, die TextBox 'MatNrTB' vom Typ 'TextBox' ist mit dem Property im ViewModel 'MatNrTB' vom Typ 'string' verknüpft, wie soll das gehen?
Soweit ich weiß, muß man von der TextBox den Text an 'MatNrTB' binden...

30.07.2018 - 12:32 Uhr

@abt: Da ich kein Programmierer bin...

Hallo, in welcher Firma arbeitest du, daß du Zeit für solch interne Tools hast und es dir erlaubt ist dafür Zeit aufzuwenden?

Als ich es in der vorletzten Firma angehen wollte, bekam ich eine über die Rübe! 😁

Mal abgesehen davon, was ich bis jetzt gelesen habe, ist ein Wirr/Warr, ein Hexenkessel mit dem Endergebnis einer Chaostheorie...

Was angesprochen wurde:
1.) Entscheidung ob WinForms oder WPF (besser als mischmasch)
1.1) MVVM Reinziehen und verstehen lernen, nicht nur überfliegen 😉
2.) Klein beginnen und Schrittweise die Funktionen einbauen
3.) vergessen, daß alles sauber in Kürze einfach so gemacht werden kann

Wenn du MVVM durch und verstanden hast, weißt du auch, wie man im DataGrid Daten binden kann und ohne jedlichen Eingriff vom Background das UI verändern muß.
Dazu zählt auch das dynamische Einbinden/Entfernen von Controls...

Ich war auch mal an den Punkt -direktes arbeiten mit dem DataGrid UI und kann es nur bereuen!-

Grüße

26.07.2018 - 12:06 Uhr

@CoLo, bist du @JusSon?

Wenn nicht, hast du ihm eine durchaus verbesserungswürdige Lösung dargeboten --> er muß nicht mehr genau nachdenken wie man das umsetzt --> lerneffekt ~33,33° %

Grüße

26.07.2018 - 08:38 Uhr

Hallo @pinki, sieht sehr interessant aus aber wie ist das Verhalten bei Größenänderungen?

Ist es auch bei mobilen Geräten annehmbar?

25.07.2018 - 16:39 Uhr

Ja Th69, darauf wäre ich noch eingegangen, hätte sogar einfache Integer oder eine Enum vorgeschlagen um die Unterschiede festzulegen.

Aber soweit ich das verstanden habe, konnte er nicht mal das Programm erstellen, wie auch du schon vermutet
(-> weil man ja nicht den ganzen Block sieht und ob er überhaupt dem entspricht wa wir hier sehen...)
hast...