3

データソース プロパティを公開するコンポーネントを使用したいのですが、オブジェクトのリスト全体をデータソースに提供する代わりに、単純なオブジェクトのみを使用したいと考えています。これを行う方法はありますか?

言及されたコンポーネントは DevExpress.XtraDataLayout.DataLayoutControl ですが、これは質問とはまったく関係ありません。

4

5 に答える 5

8

foreach ループと同じように列挙するため、データバインディングは IEnumerable オブジェクトを想定しています。

これを行うには、単一のオブジェクトを IEnumerable でラップするだけです。

これでもうまくいきます:

DataBindObject.DataSource = new List<YourObject>().Add(YourObjectInstance);
于 2008-09-07T15:19:44.707 に答える
1

私はあなたと同じことを求めています。私は新しい質問を投稿しました カスタムテンプレート化されたasp.netコントロールの双方向データバインディングは、少しリードしています。あなたがそれを作ることができるかを見てください...

于 2010-05-19T21:37:36.107 に答える
1

ASP.NET2.0 では、ジェネリック コレクションを使用して、この単一のオブジェクトをその中の 1 つのオブジェクトのみのリストにし、objectdatasource を使用して任意のサーバー コントロールにデータバインドできます。

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);

次に、ObjectDataSource は次のようになります。

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

ソース

于 2008-09-07T15:23:07.053 に答える
1

IEnumerable<T> を実装するクラスを使用する以外に選択肢はないと思います。DataSource プロパティがスカラー オブジェクトを取得できるほどスマートであったとしても、内部でベクターに変換される可能性があります。

ただし、メモリ割り当てが少なくなるため、 List<T> ではなく単純な配列を使用することを検討します。配列構文が気に入らない場合 (および読みやすさを向上させるため) は、ヘルパー メソッドを使用できます。

T[] DataSourceHelper::ToVector(T scalar) { return new T[] { scalar }; }

于 2008-09-07T17:20:49.690 に答える
0

私のformViewでこれを使用する:

databoundControl.DataSource = new [] { singleObject };
databoundControl.DataBind();
于 2010-07-24T19:46:46.353 に答える