Frage

Ich möchte eine Komponente verwenden, die die Datenquelleneigenschaft verfügbar macht, aber anstatt die Datenquelle mit einer ganzen Liste von Objekten zu versorgen, möchte ich nur ein einfaches Objekt verwenden.Gibt es eine Möglichkeit, dies zu tun?

Die erwähnte Komponente ist DevExpress.XtraDataLayout.DataLayoutControl – dies ist für die Frage jedoch ziemlich irrelevant.

War es hilfreich?

Lösung

Databinding erwartet ein IEnumerable-Objekt, weil es genau wie eine foreach-Schleife darüber aufzählt.

Um dies zu tun, wickeln Sie einfach Ihr einzelnes Objekt in ein IEnumerable ein.

Sogar das würde funktionieren:

DataBindObject.DataSource = new List<YourObject>().Add(YourObjectInstance);

Andere Tipps

In ASP.Net2.0 können Sie die generischen Sammlungen verwenden, um dieses einzelne Objekt zu einer Liste von nur einem Objekt zu machen, die Sie mithilfe der ObjectDataSource, z.

List<clsScannedDriverLicense> DriverLicenses = new
List<clsScannedDriverLicense>();
//this creates a generic collection for you that you can return from
//your BLL to the ObjectDataSource
DriverLicenses.Add(TheOneObjectThatYouHaveofType_c lsDriverLicense);

Dann würde Ihre ObjectDataSource so aussehen:

<asp:ObjectDataSource ID="odsDL" runat="server"
SelectMethod="OrdersByCustomer"
TypeName="YourBLL.UtiltiesClassName"
DataObjectTypeName="clsScannedDriverLicense">
</asp:ObjectDataSource>

Quelle

Ich glaube nicht, dass Sie eine andere Wahl haben, als eine Klasse zu verwenden, die IEnumerable<T> implementiert.Selbst wenn die DataSource-Eigenschaft intelligent genug wäre, um ein Skalarobjekt aufzunehmen, würde sie es wahrscheinlich intern in einen Vektor umwandeln.

Ich würde jedoch die Verwendung eines einfachen Arrays anstelle eines List<T> in Betracht ziehen, da dies zu weniger Speicherzuweisungen führt.Wenn Ihnen die Array-Syntax nicht gefällt (und auch um die Lesbarkeit zu verbessern), können Sie eine Hilfsmethode verwenden:

T [] dataSourcehelper :: tovector (t scalar) {return New t [] {scalar};}

Ich bin hinter dem gleichen her wie du.Ich habe eine neue Frage gepostet Bidirektionale Datenbindung eines benutzerdefinierten asp.net-Steuerelements mit Vorlage Das hat einen kleinen Vorsprung.Sehen Sie, was Sie daraus machen können ...

Verwenden Sie dies in meiner FormView:

databoundControl.DataSource = new [] { singleObject };
databoundControl.DataBind();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top