Fragensteller
Linq Subselect und Datagridview

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
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
-
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 -
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.htmbenutzen. Dem DataSource der ComboBox müsstest Du eben das Ergebnis (ggf. ToList()) Deiner Messages-Query zuweisen.
ciao Frank