Frage

Nun, zunächst einmal traurig über diese Frage muss es ziemlich gerade vorwärts für euch, aber ich bin zu kämpfen, mich auf, und ich brauche, damit es funktioniert :( Nun, ich bin versucht, t o Verwendung DataSet auf meine Anwendung

, und wenn ich es mache ich habe:

The type 'System.Data.DataSet' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data

in meiner Anwendung System.Data ist bereits aus der C verwiesen wird: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Data.dll

und ich verwende auf meinem mit Klauseln als auch

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;

Dieser Datensatz ist eine Antwort von einem Webservice So eine Idee, wie man dieses Problem zu beheben?

PS. Ich weiß nicht, ob es hilft, aber ich bin mit NHaml meine Ansicht machen

Vielen Dank


UPDATE:

Die einzige Lösung, die ich für den Moment war gefunden stattdessen einen Datensatz zu der Ansicht Konverter Passieren des DataSet a

<List<List<String>>

und eine Schleife durch den gesamten Datensatz wie diese passieren

List<List<String>> myList = new List<List<String>>();

foreach (DataRow row in dsTrades.Tables[0].Rows)
{
    List<String> myListColumns = new List<String>();

    for (var index = 0; index < dsTrades.Tables[0].Columns.Count; index ++)
    {
        myListColumns.Add(row[index].ToString());
    }

    myList.Add(myListColumns);
}

// THIS SHOULD BE THE DATASET AND NOW 
// IT'S CONVERTED TO A LIST WITH STRINGS LIST INSIDE
viewModel.Trades = myList; 

return View(viewModel);

Eigentlich ist dies völlig verrückt ins't es?

All Job leicht in die Ansicht durchgeführt werden könnte, wenn DataSet mit direkt Ich hoffe, dass mir jemand mit einer einfacheren Art und Weise helfen kann, es zu tun

Danke:)


UPDATE (Lösung)

Simon Antwort war wirklich effektiv und es funktionierte beim ersten Versuch nach Namespaces für System.Data und System.Xml Zugabe, aber zur gleichen Zeit, Joshs Antwort präsentiert eine sehr schöne und coole Art, mit Dataset zu arbeiten, die auf meiner Meinung nach funktioniert viel besser und ich denke, ich werde jetzt gehen für sie.

Dank für Sie Hilfe

War es hilfreich?

Lösung

versuchen, einen ausdrücklichen Hinweis auf System.Data in Ihrer NHaml Konfiguration hinzufügen

<?xml version="1.0"?>

<configuration>
...
    <configSections>
            <section name="nhaml" type="NHaml.Configuration.NHamlConfigurationSection, NHaml"/>
    </configSections>
...
<nhaml autoRecompile="true">
            <assemblies>
                    <clear/>
                    ...
                    <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            </assemblies>
            <namespaces>
                    <clear/>
                    ...
                    <add namespace="System.Data"/>
            </namespaces>
    </nhaml>

offensichtlich ersetzen "..." mit dem anderen Referenzen und Config

Andere Tipps

Das einzige, was ich denken konnte, ist, dass die System.Data Referenz nicht sichtbar im Kontext der Seite ist.

Versuchen Sie, den Namespace in Ihrer web.config hinzufügen:

<pages>
   <controls />
   <namespaces>
      <add namespace="System.Data"/>
   </namespaces>
</pages>

Ich weiß, es ist nicht wirklich ein Teil Ihrer Frage, aber ich würde empfehlen, die Felder in Ihrer Datentabelle den Aufbau einer Klasse gefüllt mit Eigenschaften darstellt. Mit Linq, können Sie einfach Ihre Zeilen in das Klassenobjekt konvertieren und eine Liste von ihnen zurück. Hier einige grobe (und nicht kompilierten Code).

[Serializable]
public class MyClass
{
   public string Property1 { get; set; }
   public string Property1 { get; set; }
}

Sie wollen es serialisierbar sein, damit Ihr Web-Service als XML oder JSON zurückgeben kann (aber Sie es zurückkommen). Die Linq würde wie folgt aussehen:

var result = from r in dataSet.Table[0].Rows.AsEnumerable()
             select new MyClass() {
                Property1 = r["Field1"].ToString()
                Property2 = r["Field2"].ToString()
             };

return result.ToList();

In meiner persönlichen Erfahrung, neigen Datasets Ressourcen-Fresser zu sein. Außerdem wird Linq effizienter sein als die für Schleifen.

Hope, das hilft.

Löschen Sie die Referenz (system.Data) ..und die gleiche Referenz hinzufügen wieder .. könnte es Arbeit sein ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top