Hi,
Ich nutze gerade für ein Projekt das Caliburn Micro MVVM Pattern ( falls das relevant ist ).
Mein Vorhaben:
Ich lade eine Liste mit Artikeln in eine Liste und möchte diese anschließend einer BindableCollection zuweisen. Dazu habe ich folgende Codes:
ArticleDataModel.cs
MainViewModel.cs ( relevanter Auszug ):
Im Debugger sehe ich, dass er 9602 DataRows hat, also alles geladen wurde. Der Umwandlungsfehler muss in diesem Bereich sein:
Zum Vergleich evtl. noch hilfreich, der Query-Aufbau:
Sollte aus meiner Sicht alles zu den entsprechenden DataRow.Field<T>( col_name ) passen?
Für Hinweise immer offen, danke!
Gruß Arne
ps: was ist eigentlich mit dem highlightning geworden? Ist das mit der vb5 entfallen?
Habe jetzt php-Tags verwendet, damit überhaupt was gehighlighted wird.
Ich nutze gerade für ein Projekt das Caliburn Micro MVVM Pattern ( falls das relevant ist ).
Mein Vorhaben:
Ich lade eine Liste mit Artikeln in eine Liste und möchte diese anschließend einer BindableCollection zuweisen. Dazu habe ich folgende Codes:
ArticleDataModel.cs
PHP Code:
public class ArticleDataModel
{
public bool Aktiv { get; set; }
public string Artikelnummer { get; set; }
public int AuspraegungID { get; set; }
public string ArtikelSKU { get; set; }
public string HauptArtikelgruppe { get; set; }
public string ArtikelTyp { get; set; }
public string ArtikelTypBezeichnung { get; set; }
public string Matchcode { get; set; }
public string Bezeichnung1 { get; set; }
public string Bezeichnung2 { get; set; }
public string Bezeichnung { get; set; }
public string Variante { get; set; }
public decimal Laenge { get; set; }
public decimal Hoehe { get; set; }
public decimal Breite { get; set; }
public decimal Gewicht { get; set; }
public decimal Bestand { get; set; }
public decimal BestandPick { get; set; }
public string Offen { get; set; }
public string SplitSize { get; set; }
}
MainViewModel.cs ( relevanter Auszug ):
PHP Code:
public BindableCollection<ArticleDataModel> ArticleDataList { get; set; }
public MainViewModel()
{
/*
* auskommentierter Bereich
*/
using ( DataTable dt = DataBaseModel.Query() ) {
if (dt.Rows.Count < 1)
return;
List<ArticleDataModel> lstData = new List<ArticleDataModel>();
foreach (DataRow r in dt.Rows) {
lstData.Add( new ArticleDataModel() {
Aktiv = r.Field<Boolean>("Aktiv"),
Artikelnummer = r.Field<string>("Artikelnummer"),
AuspraegungID = r.Field<int>("AuspraegungID"),
ArtikelSKU = r.Field<string>("ArtikelSKU"),
HauptArtikelgruppe = r.Field<string>("HauptartikelGruppe"),
ArtikelTyp = r.Field<string>("ArtikelTyp"),
ArtikelTypBezeichnung = r.Field<string>("ArtikelTypBezeichnung"),
Matchcode = r.Field<string>("Matchcode"),
Bezeichnung1 = r.Field<string>("Bezeichnung1"),
Bezeichnung2 = r.Field<string>("Bezeichnung2"),
Bezeichnung = r.Field<string>("Bezeichnung"),
Variante = r.Field<string>("Variante"),
Laenge = r.Field<decimal>("Laenge"),
Breite = r.Field<decimal>("Breite"),
Hoehe = r.Field<decimal>("Hoehe"),
Gewicht = r.Field<decimal>("Gewicht"),
Bestand = r.Field<decimal>("Bestand"),
BestandPick = r.Field<decimal>("BestandPick"),
Offen = r.Field<string>("Offen"),
SplitSize = r.Field<string>("SplitSize")
});
}
ArticleDataList = new BindableCollection<ArticleDataModel>( lstData );
}
}
Im Debugger sehe ich, dass er 9602 DataRows hat, also alles geladen wurde. Der Umwandlungsfehler muss in diesem Bereich sein:
PHP Code:
lstData.Add( new ArticleModel() {
// ...
});
Zum Vergleich evtl. noch hilfreich, der Query-Aufbau:
PHP Code:
select
Aktiv = cast(abs(isnull(ArtikelStamm.Aktiv, 0)) as bit),
Artikelnummer = ArtikelStamm.Artikelnummer,
AuspraegungID = Variante.AuspraegungID,
ArtikelSKU = ArtikelStamm.Artikelnummer + iif(Variante.AuspraegungID > 0, ';' + cast(Variante.AuspraegungID as varchar(5)), ''),
HauptartikelGruppe = ArtikelStamm.Hauptartikelgruppe,
ArtikelTyp = case
when ArtikelStamm.Stuecklistentyp = 3 then 'L'
when ArtikelStamm.Stuecklistentyp = 2 then 'H'
when ArtikelStamm.Stuecklistentyp = 1 then 'P'
else 'A'
end,
ArtikelTypBezeichnung = case
when ArtikelStamm.Stuecklistentyp = 3 then 'Leistungsstückliste'
when ArtikelStamm.Stuecklistentyp = 2 then 'Handelsstückliste'
when ArtikelStamm.Stuecklistentyp = 1 then 'Produktionsstückliste'
else 'Stammartikel'
end,
Matchcode = ArtikelStamm.Matchcode,
Bezeichnung1 = ArtikelStamm.Bezeichnung1,
Bezeichnung2 = ArtikelStamm.Bezeichnung2,
Bezeichnung = Bezeichnung1 + isnull(Bezeichnung2, ''),
Variante = Auspraegung.Auspraegung1 + iif(Auspraegung.Auspraegung2 is not null, ' ; ' + Auspraegung.Auspraegung2, ''),
Laenge = ArtikelStamm.Laenge,
Hoehe = ArtikelStamm.Breite,
Breite = ArtikelStamm.Hoehe,
Gewicht = cast(Variante.Gewicht as varchar(15)) + iif(ArtikelStamm.Gewichtseinheit is not null, ' ' + ArtikelStamm.Gewichtseinheit, ' kg'),
Bestand = isnull(Bestand.Menge, 0),
BestandPick = isnull(BestandPick.Menge, 0),
Offen = null,
SplitSize = case
when abs(isnull(Variante.VOSS_IsS, 0)) = 1 then 'S'
when abs(isnull(Variante.VOSS_IsL, 0)) = 1 then 'L'
when abs(isnull(Variante.VOSS_IsXL, 0)) = 1 then 'XL'
else 'M'
end
Sollte aus meiner Sicht alles zu den entsprechenden DataRow.Field<T>( col_name ) passen?
Für Hinweise immer offen, danke!
Gruß Arne
ps: was ist eigentlich mit dem highlightning geworden? Ist das mit der vb5 entfallen?
Habe jetzt php-Tags verwendet, damit überhaupt was gehighlighted wird.
Comment