2012-04-16 8 views
1

DropDownListがあり、ObjectDataSourceからデータがロードされ、ArrayList<MyObject>が返されます。私は、返されたArrayListをフィルタリングする方法を知りたいです。ObjectDataSourceから返されたオブジェクトをフィルタリングする方法は?

たとえば、MyObjectクラスのプロパティの1つは 'IsCompulsory'です。 ODSがArrayList<MyObject>をロードし、データをDropDownListにバインドする前に、IsCompulsory = falseのすべてのオブジェクトを削除したいと思います。

どうすればよいですか?私はObjectDataSourceOnSelectedイベントは良い場所だと思ったが、どのように値をフィルタリングするのですか?&どうすればいいですか?

答えて

0

あなたは以下に示すように、それを行うためにLINQを使用することができます。

List<MyObject> filteredObjects = (from MyObject obj in sourceObjects 
              where obj.IsCompulsory == false 
              select obj).ToList<MyObject>(); 

をあなたのリストを持っていると仮定するとsourceObjectsに(フィルタリングします)。

P.S.上記のためにusing System.Linq;を追加することを忘れないでください。

EDIT:あなたは今、あなたのDropDownListためDataSourceとしてfilteredObjectsを使用する必要があります。

+0

右ここ

は、例えば、(完全な例については、以下のリンクを参照)です。私はデータをフィルタリングする方法を知っています。どこでそれをするかを知ろうとしています。それは 'asp:ObjectDataSource'のいくつかのイベントになるはずです。これは、OnSelectedである可能性があります。フィルターデータを返す方法はわかりません。 –

1

私は、OnSelectedメソッドがデータをフィルタリングするには遅すぎると考えています。もう1つの方法は、必要なデータだけを照会するためにObjectDataSourceにParametersを使用することです。これにより実際にパフォーマンスが向上する可能性があります。宣言的にまたはプログラムで設定することができます。

<asp:objectdatasource 
    ID="ObjectDataSource1" 
    runat="server" 
    SelectMethod="GetMyObject" 
    TypeName="MyNamespace.MyClass" > 
    <SelectParameters> 
    <asp:ControlParameter ControlID="CheckBox1" DefaultValue="false" Name="myCondition" /> 
    </SelectParameters> 
</asp:objectdatasource> 

コンプリート例:

http://msdn.microsoft.com/en-us/library/57hkzhy5.aspx

+0

私はそのアプローチを知っています。私の場合、いくつかの場所で同じAPIを使用する必要があり、コントロールにバインドする前に返されたデータをフィルタリングする必要があります。 –

+0

Mmm私はあなたのAPIを変更せずにObjectDataSourceコントロールを使用して、必要なものを達成できるかどうかはわかりません。私は他の人がこのことについて何を言わなければならないのか不思議です。 – Ulises

関連する問題