verwendetes Datenbanksystem: <IBM DB2>
Hallo zusammen,
ich habe das Problem, dass mein DataGridView nach Abfrage auf das DBMS leer bleibt.
Also, die Anzahl der DataGridView Rows stimmt, aber die Werte in den Spalten des DataGridViews bleiben bei Strings leer und bei numerischen Werten 0.
Für mich heißt das, dass die zurückgelieferte List<ErpData> nicht leer ist, weil ja die korrekte Anzahl der Datensätze angezeigt werden, nur die Daten eben nicht.
Ich weiß jetzt nicht, woran das liegt. Könnt ihr mir einen Tipp geben?
namespace Projektname.Models
{
public class ErpData
{
public int Id { get; set; }
public string Auftrag { get; set; }
public string Pos { get; set; }
public string Artikel { get; set; }
public string Material { get; set; }
public string Kategorie { get; set; }
public Single Menge1 { get; set; }
public Single Menge2 { get; set; }
}
}
public IList<ErpData> GetErpDataByOrder()
{
string qryErpData = "SELECT bla FROM blubb WHERE Auftragsnummer = @paramId";
System.Diagnostics.Debug.Print("QUERY: " + qryErpData);
using (IDbConnection db = new iDB2Connection(ConfigurationManager.ConnectionStrings["csAs400"].ConnectionString))
{
if (db.State == ConnectionState.Closed)
{
db.Open();
return db.Query<ErpData>(qryErpData, new { paramId = textBoxSpool.Text }).ToList();
}
}
return null;
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = GetErpDataByOrder();
}
Hi,
nach deinen Schilderungen ist davon auszugehen, dass die Daten zumindest ankommen.
Dementsprechend musst du nun die Einstellungen deines DataGridViews kontrollieren.
Zum einen gibt es einen Modus, in welchem automatisch Columns erstellt werden, zum anderen kann man das manuell machen und muss entsprechend die Bindungseinstellungen festlegen.
Was davon hast du wie getan?
LG
Bedenke, dass Du hier gerade eine Schichtverletzung hast:
Dein Modell wird 1:1 von Datenbank, durch die Business-Schicht in die UI geschubst - und Du hast Datenbank-Code in Deiner UI.
Darüber hinaus übergibst Du ein UI Element direkt an eine Datenbank-Abfrage.
Modularität hast Du damit von Beginn an ausgeschlossen 😉
Eigentlich ist da schon vorprogrammiert, dass das knrischen wird 😉
[Artikel] Drei-Schichten-Architektur
PS: Wenn man mit Listen arbeitet gibt man eine leere Liste bei keinen Treffern zurück, und nicht null.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo, ich habe alles automatisch (Standard) gelassen. Die Spaltennamen werden ja auch analog meines ORM generiert.
Was sagt denn der Debugger, was in den zurückgegebenen Objekten steht?
Also am DGV liegts wahrscheinlich nicht.
Wenn ich die Liste durchgehe und ausgeben lasse, erhalte ich ebenfalls leere Strings und Nullen bei numerischen Werten.
Hallo,
Stimmen die Namen deiner Properties mit den Namen der Spalten in der Tabelle überein?
Wenn ich die Liste durchgehe und ausgeben lasse, erhalte ich ebenfalls leere Strings und Nullen bei numerischen Werten.
Spricht alles dafür, dass die Tabellenrückgabe nicht Deinem Modell entspricht und damit nichts gemappt werden kann.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Aber ich habe die Datentypen nochmal mit denen der Datenbank abgeglichen und kann keine Unstimmigkeiten finden
Oh man ...
Entschuldigt bitte, dass ich eure Zeit geraubt habe. Das Problem ist gelöst. Natürlich hatte sich ein Fehler bei der Spaltenbenennung eingeschlichen. 🤔