2 Stimmen

Verbinden von Tabellen in .NET DataSet zur Anzeige in DataGridView

Ich habe zwei Tabellen in einem DataSet in .NET. Ich möchte sie über eine ID-Spalte verbinden. Dann möchte ich, dass ein DataGridView zwei Spalten aus der ersten Tabelle und eine Spalte aus der zweiten Tabelle anzeigt.

Zur Vereinfachung ist die Beziehung zwischen den beiden Tabellen eineindeutig.

Ist es machbar?

4voto

Marc Gravell Punkte 970173

Kann man sie nur lesen? In .NET 3.5 / C# 3.0 könnten Sie wahrscheinlich eine LINQ-Verknüpfung und einen anonymen Ausgabetyp ziemlich einfach verwenden:

        DataTable left = new DataTable
        {
            Columns = { {"PK", typeof(int)}, {"Name", typeof(string)}},
            Rows = {{1,"abc"},{2,"def"}}
        }, right = new DataTable
        {
            Columns = { { "FK", typeof(int) }, { "Value", typeof(decimal) } },
            Rows = { { 1, 123.45M }, { 2, 678.9M } }
        };
        var qry = from x in left.Rows.Cast<DataRow>()
                  join y in right.Rows.Cast<DataRow>()
                  on x.Field<int>("PK") equals y.Field<int>("FK")
                  select new
                  {
                      Name = x.Field<string>("Name"),
                      Value = y.Field<decimal>("Value")
                  };
        var data = qry.ToList();

Sie können dann an "Name" und "Wert" der Daten binden. Beachten Sie, dass dies bei typisierten Datensätzen einfacher ist, da Sie die Cast<> y Field<> Unsinn.

0voto

netadictos Punkte 7524

Warum sollte man den Designer nicht benutzen? Sie platzieren beide Tabellen im Dataset, stellen die Beziehung her und ändern die Fill/Get-Methoden in etwa so (mit dem "Inner Join"):

SELECT Produkte.idProdukt, Produkte.Name, Preise.Preis, Shops.idStore, Zones.Area,Products.idZone FROM
Produkte INNER JOIN Preise ON Produkte.idProdukt = Preise.idProdukt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X