Announcement

Collapse
No announcement yet.

Probleme mit typisierten DataSet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit typisierten DataSet

    Hallo zusammen!

    Ich habe ein Problem mit einem typisierten DataSet den ich von einem WebService bekomme, z.B.:
    [CSHARP]Products dsProducts = servProxy.getProducts();[/CSHARP]
    wenn ich diesen an ein DataGrid binde, dann funktioniert alles wunderbar. Wenn ich aber uf die Werte zugreifen möchte z.B.:
    [CSHARP]//Zugriff auf ProductName-Spalte in der ersten Zeile der Products-Tabelle
    string s = dsProducts[0].ProductName;[/CSHARP]
    dann kriege ich die Exception dass die Zeile 0 gar nicht gibt, obwohl der DataGrid mir fröhlich ganz schön viele Werte/Zeilen anzeigt.
    Wenn ich auch die Anzahl der Zeilen abfrage mit:
    [CSHARP]int zeilen = dsProducts.Count;[/CSHARP]
    dann kriege auch ich als Ergebniss 0!

    Was mache ich falsch?

  • #2
    Ich denke mal das dsProducts der Name des Typisierten DataSet ist und nicht der Tabellenname. Du mußt eine DataRow über eine DataTable und diese wiederum über eine DataSet ansprechen.

    Sprich die Zeile in einer Tabelle so an:
    dsName. TableName[rowIdx].ColumnName

    oder bei dir:
    dsProducts.Products[0].ProductName

    Ich denke du hast einfach vergessen die Tabelle mitanzugeben.

    Gruß Rolan

    Comment


    • #3
      Ja stimmt! Ich habe hier ein Tippfehler gemacht, in meinem Quellcode greife ich auch auf die Daten so zu:
      dsProducts.Products[0].ProductName;

      Nur funktioniert es, wie gesagt, bei mir nicht!
      In dem DataSet steht nichts obwohl im DatGrid viele Daten angezeigt werden!?!?

      Comment


      • #4
        Also, hier vielleicht etwas Code zum Problem:

        <b>DataSet-Schema:</b>
        <?xml version="1.0" encoding="utf-8" ?>
        <xs:schema id="Products" targetNamespace="http://tempuri.org/Products.xsd" elementFormDefault="qualified"
        attributeFormDefault="qualified" xmlns="http://tempuri.org/Products.xsd" xmlns:mstns="http://tempuri.org/Products.xsd"
        xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="Products" msdata:IsDataSet="true">
        <xs:complexType>
        <xs:choice maxOccurs="unbounded">
        <xs:element name="Products">
        <xs:complexType>
        <xs:sequence>
        <xs:element name="No_" type="xs:string" minOccurs="0" />
        <xs:element name="Task-at_x0020_Code" type="xs:string" minOccurs="0" />
        <xs:element name="Service_x0020_Type" type="xs:string" minOccurs="0" />
        <xs:element name="Quantity" type="xs:decimal" minOccurs="0" />
        </xs:sequence>
        </xs:complexType>
        </xs:element>
        </xs:choice>
        </xs:complexType>
        </xs:element>
        </xs:schema>
        <br />
        <b>Daten aus DB lesen:</b>
        Products dsProducts = new Products();
        SqlConnection MyConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);

        <br />string MySQLCommand = "SELECT * FROM Tabelle";
        <br />SqlDataAdapter MyCommand = new <br />SqlDataAdapter(MySQLCommand, MyConnection);
        <br />MyCommand.Fill(dsProducts , "Products")

        Comment


        • #5
          Ich habe den Fehler gefunden!
          Es lag daran dass, die definierte XSD-Struktur nicht den Inhalt der Tabelle entspricht, die Datentypen stimmten nicht überein! Somit konnte ich auf die Klassen-Eigenschaften nicht zugreifen da die Struktur überhaupt nicht gefühlt werden konnte und der DataGrid mit dem default-DataSet gefühlt wurde

          Comment

          Working...
          X