none
Linq Subselect und Datagridview RRS feed

  • Frage

  • Hallo Community,

    ich dachte ich komme alleine auf die Lösung aber des wird nix ;-)

     

    Folgendes : Ich habe ein Datagridview welches ich Virtual Fülle

    Soweit gut.

     

    Die Daten kommen aus einer Datenbank und werden simpel in ein Array gefüllt

     

    this.dataGridView1.DataSource = _datasets;

     

    Das _datasets Objekt fülle ich zur Zeit Singlethreaded also erst Objekt füllen dann anzeigen.

     

    Nun mein Problem :    

     

    public Array GetStats()
                {
                    var e = from i in db.Data
                            join d in db.Tracker on i.KdNr equals d.FK_KDNR into custTracker
                            where i.Stat == "PENDING"
                            select new
                                       {
                                           ID = i.ID,
                                           KDNR = i.KdNr,
                                           Kampagne = i.Campaign,
                                           Status = i.Stat,
                                           Datum = i.Date,
                                           Nachrichten = custTracker
                                       };
                    return e.ToArray();
                }

     

    in der Tabelle Tracker gibt es zu jeder kdnr einen Eintrag. Ich will pro Zeile die Infos (ID usw.) und alle Einträge(Nachrichten) in einer Combobox IM DGV pro zeile haben

    Leider klappt dieses nicht.

     

    Frage 2 : Wenn ich das ganze Multithreaded fülle, reicht es dann das ganze Array zu füllen und der DGV kriegt das mit ? oder muss ich mit Events arbeiten oder evtl. eine Asynchrone Methode schreiben ?

    Danke und Gruß

    UPDATE :

     

    Tabelle Tracker :

    ID : int

    kdnr : int

    Message : string

    Direction : Int

    Timestamp : Datetime

     

    Donnerstag, 22. Juli 2010 11:12

Alle Antworten

  • Ok Nr1 gelöst ^^^

     

     

    var e = from i in db.Data
                            join d in db.Tracker on i.KdNr equals d.Data.KdNr into custTracker
                            where i.Stat == "PENDING"
                            select new
                                       {
                                           ID = i.ID,
                                           KDNR = i.KdNr,
                                           Kampagne = i.Campaign,
                                           Status = i.Stat,
                                           Datum = i.Date,
                                           Nachrichten = from v in db.Tracker
                                                         select new
                                                                    {
                                                                      mess = v.Message  
                                                                    }
                                       };
                    return e.ToArray();

    Jetzt kann mir hoffentlich Jmd Frage 2 beantworten

    und Frage 3 auch gleich : Wie überrede ich das Datagridview die Nachrichten als Comboxbox anzuzeigen ?

     

    Grüße

    Donnerstag, 22. Juli 2010 13:22
  • Soo,

     

    Messages kriege ich nun als Liste.

    Ich weiß auch das ich, um die Messages anzeigen muss was mit dem Event CellValueNeeded machen muss.

    Wie kriege ich dazu eine Combobox mit allen Messages anzeigen zu lassen ?

     

    Danke für Tipps.

     

    Grüße

    Freitag, 23. Juli 2010 11:45
  • Hallo Pawel,

        > Ich weiß auch das ich, um die Messages anzeigen muss was mit dem Event CellValueNeeded machen muss.

    gut, wenn da noch Fragen sind, ggf.:

    [Nutzung grosser Datenmengen beim DataGridView]
    http://dzaebel.net/DgvVirtual.htm


        > Wie kriege ich dazu eine Combobox mit allen Messages anzeigen zu lassen ?

    Zum Beispiel die Message-Liste an den DataSource der ComboBox binden.
    Oder meinst Du mit "Anzeigen" das Herunterklappen der ComboBox-Liste, dann z.B.: [comboBox1.DroppedDown = true;].


    ciao Frank
    Samstag, 24. Juli 2010 09:07
  • Hallo Frank,

     

    die Combobox soll in in der DatagridviewCell angezeigt werden und alle Messages enthalten.

    Grüße

     

    Samstag, 24. Juli 2010 09:58
  • Hallo Pawel,

    • die Combobox soll in in der DatagridviewCell angezeigt werden und alle Messages enthalten.

    Um die ComboBox hereinzubekommen kannst Du zum Beispiel [Download3 (zunächst app.config->DataSource anpassen .. ggf. .\SLExpress  / dann "DbErzeugen.sql" doppelklicken und ausführen] aus:

    [Typsichere Eigenschaften bei Datenbindung]
    http://dzaebel.net/TypesafeProps.htm

    benutzen. Dem DataSource der ComboBox müsstest Du eben das Ergebnis (ggf. ToList()) Deiner Messages-Query zuweisen.
     


    ciao Frank
    Samstag, 24. Juli 2010 10:50